首页 > 系统相关 >linux之slb四层负载(lvs)

linux之slb四层负载(lvs)

时间:2024-12-15 22:23:10浏览次数:5  
标签:www lvs server nginx proxy conf linux root slb

负载均衡-动静分离

  • slb四层负载

LVS(Linux Virtual Server) 是一个开源的负载均衡解决方案,运行在 Linux 操作系统上,用于在多个后端服务器之间分配客户端的请求,从而实现高可用性和负载均衡。它通常用于大规模网站、应用程序和微服务的架构中,适用于高并发场景,以提高系统的性能和可扩展性。

1.LVS的几种工作模式

LVS的几种工作模式
1.DR模式
2.NAT模式
3.FULL NAT模式
4.TUN隧道模式

Nginx支持四层负载吗?
支持,但是是假的,不是真四层,只是模拟的四层代理。可以用LVS来做四层转发。

2.四层负载

image

(1)lvs配置
1.配置nginx仓库,并安装nginx
yum -y install nginx

2.配置4层代理,域名解析到lvs服务器IP
#四层代理需要写入/etc/nginx.conf文件(在http模块以外地方配置)
[root@lvs nginx]# vi nginx.conf 
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

#lvs 配置参数
stream {
        upstream webs {
                server 172.16.1.5:80; #反向代理slb,可以多台
        }
        server {
                listen 80;
                proxy_pass webs; 
        }
}

http {...


(2)slb配置
[root@proxy conf.d]# cat slb.conf 
upstream webs {
	server 10.0.0.7;
	server 10.0.0.8;

}

#wp
server {
	listen 80;
	server_name www.wp.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
		
	}
}

#zh
server {
	listen 80;
	server_name www.zh.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
	}
}

#test
server {
	listen 80;
	server_name www.test.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
	}

	location /upstream_check {
		check_status;
	}
}

#admin
server {
	listen 80;
	server_name www.admin.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
	}

}


(3)web01和web02配置
[root@web01 conf.d]# cat test.conf 
server {
	listen 80;
	server_name www.test.com;
	location / {
		root /test;
		index 1.php;
	}
	location ~ \.php$ {
    		root           /test;
    		fastcgi_pass   127.0.0.1:9000;
    		fastcgi_index  index.php;
    		fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    		include        fastcgi_params;
	}
}

3.配置路由转发模式

#ssh 注意:stream模块只能有1个,客户端通过lvs服务器2222端口,转发到10.0.0.7的22端口
stream {

        upstream ssh {
                server 10.0.0.7:22;
        }
        server {
                listen 2222;
                proxy_pass ssh;
        }
}

#windows cmd测试
PS C:\Users\User> ssh 10.0.0.4 -p 2222 -l root

Authorized users only. All activities may be monitored and reported.
root@10.0.0.4's password:

Authorized users only. All activities may be monitored and reported.
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Sun Dec 15 09:09:15 2024 from 10.0.0.2
[root@web01 ~]#

4.单台配置动静分离

#这里使用tomcat
1.安装Java环境
[root@web01 ~]# yum -y install java-11-openjdk

2.安装tomcat
[root@web01 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.tar.gz

3.解压到/usr/local
[root@web01 ~]# tar xf apache-tomcat-10.1.34.tar.gz -C /usr/local/

4.启动服务 运行在8080端口
[root@web01 ~]# /usr/local/apache-tomcat-10.1.34/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/apache-tomcat-10.1.34
Using CATALINA_HOME:   /usr/local/apache-tomcat-10.1.34
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-10.1.34/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-10.1.34/bin/bootstrap.jar:/usr/local/apache-tomcat-10.1.34/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

5.IP加端口访问

4.1本地配置nginx反向代理,转发到tomcat

#配置nginx
[root@web01 conf.d]# cat tomc.conf 
server {
	listen 80;
	server_name www.tom.com;
	location / {
		proxy_pass http://10.0.0.7:8080;
	}
	location ~ \.(jpg|svg|png)$ {
		root /images;
	}
}

#创建/images目录
[root@web01 conf.d]# mkdir /images

#编辑/etc/hosts文件
[root@web01 conf.d]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7 www.admin.com
10.0.0.7 www.tom.com

#拷贝tomcat的那只猫 到/images目录下
[root@web01 ~]# cp /usr/local/apache-tomcat-10.1.34/webapps/ROOT/tomcat.svg /images/

#slb配置 www.tom.com 转发后端web服务器
[root@proxy conf.d]# cat slb.conf
#tom
server {
	listen 80;
	server_name www.tom.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
	}

}

#在windows配置域名www.tom.com解析 到lvs上


image

请求图片未加载成功是因为,在web02本地,nginx把所有.png|svg|jpg结尾的定向到/images目录下,该目录权限所属root,被nginx调用,nginx用户无读的权限

#修改/images权限未nginx
[root@web01 conf.d]# chown -R nginx.nginx /images

再次访问

image

5.多台配置动静分离

5.1 web01配置动态jsp程序
#配置jsp程序
[root@web01 apache-tomcat-10.1.34]# cat webapps/ROOT/index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
<HEAD>
<TITLE> JSP Page</TITLE>
</HEAD>
<BODY>
<%
Random rand = new Random();
out.println("<h1>随机数:<h1>");
out.println(rand.nextInt(99)+100);
%>
</BODY>
</HTML>

#测试jsp 
[root@web01 apache-tomcat-10.1.34]# curl 127.0.0.1:8080
<HTML>
<HEAD>
<TITLE>JSP Page</TITLE>
</HEAD>
<BODY>
<h1>随机数:<h1>
144
</BODY>
</HTML>





5.2 web02配置静态资源图片
[root@web02 conf.d]# cat s.conf 
server {
	listen 80;
	server_name www.s.com;
	location / {
		root /s;
		index index.html;
	}
}

#创建 /s目录,并上传4r.jpg
mkdir /s

#slb主机配置 www.s.com
[root@proxy conf.d]# cat slb.conf 
upstream webs {
	server 10.0.0.7;
	server 10.0.0.8;

}
#s
server {
	listen 80;
	server_name www.s.com;
	location / {
		proxy_pass http://webs;
		include proxy_params;
	}

}

#windows配置www.s.com解析到lvs服务器
10.0.0.4 www.s.com



5.3 配置负载均衡slb服务器
[root@proxy conf.d]# cat ds.conf 
upstream static {
	server 172.16.1.8;
}

upstream java {
	server 172.16.1.7:8080;
}

#s
server {
	listen 80;
	server_name www.s.com;
	
	location ~ \.(png|jpg|svg)$ { #如果访问结尾是图片类型,经slb转向后端10.0.0.8处理
		proxy_pass http://static;
		include proxy_params;
	}
	
	location ~ \.jsp$ {          #如果访问结尾是.jsp,经slb转向后端10.0.0.7处理
		proxy_pass http://java;
		include proxy_params;
	}
}


访问www.s.com/4r.jpg

image

访问www.s.com/index.jsp

image

6.动态、静态数据合并

#实现方式在slb服务器,进行合并

#修改slb服务器,conf.d/ds.conf
[root@proxy code]# cat /etc/nginx/conf.d/ds.conf 
upstream static {
	server 172.16.1.8;
}

upstream java {
	server 172.16.1.7:8080;
}

#s
server {
	listen 80;
	server_name www.s.com;
	
	root /code/;           #添加动态、静态数据合并网站目录
	index index.html;	
	
	location ~ \.(png|jpg|svg)$ {
		proxy_pass http://static;
		include proxy_params;
	}
	
	location ~ \.jsp$ {
		proxy_pass http://java;
		include proxy_params;
	}
}


#创建 /code 并写入合并程序
mkdir /code

[root@proxy code]# cat index.html 
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<title>测试ajax和跨域访问</title>
		<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
	</head>
	<script type="text/javascript">
		$(document).ready(function(){
			$.ajax({
				type: "GET",
				url: "http://www.s.com/index.jsp",  #实际经slb服务器,转发后端的10.0.0.7服务器处理
				success: function(data){
					$("#get_data").html(data)
				},
				error: function() {
					alert("哎呦喂,失败了,回去检查你服务去~");
				}
			});
		});
	</script>
	<body>
		<h1>测试动静分离</h1>
		<img src="http://www.s.com/4r.png">      #实际经slb服务器,转发后端的10.0.0.8服务器处理
		<div id="get_data"></div>
	</body>
</html>


#检测配置文件是否语法
[root@proxy code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@proxy code]# ll
total 4
-rw-r--r-- 1 root root 615 Dec 15 15:43 index.html

#重新加载配置文件
[root@proxy code]# systemctl reload nginx

浏览器访问www.s.com

image

标签:www,lvs,server,nginx,proxy,conf,linux,root,slb
From: https://www.cnblogs.com/sharecorner/p/18608817

相关文章

  • linux之nginx模块配置
    nginx模块配置nginx基础模块1.目录索引(ngx_http_autoindex_module)ngx_http_autoindex_module模块处理以斜杠字符('/')结尾的请求,并生成一个目录清单。通常,当ngx_http_index_module模块找不到索引文件时,请求被传递给ngx_http_autoindex_module模块。语法格式Syntax: autoinde......
  • linux之lnmp环境配置
    LNMPnginx[root@web01~]#cat/etc/yum.repos.d/nginx.repo[nginx-stable]name=nginxstablerepobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=trueyuminstall......
  • linux之ssh服务
    SSH服务ssh是什么ssh配置项配置免密登录优化sshssh是什么SSH为SecureShell的缩写,是建立在应用层基础上的安全协议。SSH是较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。利用用SSH协议可以有效防止远程管理过程中的信息泄露问题。ssh安装yum-yinst......
  • 【基于激光点云的目标检测】Ubuntu-Linux | 激光点云
    #本文是记录学习使用激光雷达相关的内容,其中是参考下面这篇博客无人驾驶汽车系统入门(二十四)——激光雷达的地面-非地面分割和pcl_ros实践_地面分割:无人驾驶汽车系统入门(二十四)-CSDN博客#一、激光雷达信号处理1、点云处理(1)点云预处理        由于点云的数据集......
  • 【原创】ARM64 实时linux操作系xenomai4(EVL)构建安装简述
    目录0环境说明1内核构建2库编译方式1交叉编译方式2本地编译3测试单元测试hectic:EVL上下文切换latmus:latency测试4RK3588xenomai4实时性能5总结xenomai4虽然推出很长时间了(2021第一个稳定版本),但当时只是在x86上跑了一下就再没关注过,最近一直想看看xenomai4在ARM64上......
  • 配置.NET Web应用使用自定义证书实现Https访问,支持Linux
    1.配置在appsettings.json增加下面配置:"Kestrel":{"Endpoints":{"Https":{"Url":"https://*:34038","Certificate":{"Path":"CloudFlare_Origin_Ce......
  • linux下github全局加速——fastgithub
    安装fastgithub国内大部分服务器无法访问github,或者即时能访问也是速度慢,时灵时不灵的。需要给github加速一下。一般有四种方法:修改/etc/hosts文件,需要实时更新本地下载文件之后再上传到服务器。需要二道程序通过镜像来加速。3.1通过gitee加速,通过修改github地址来将......
  • linux文件IO:epoll
    poll和select的改进版,在一个程序需要处理数百个文件描述符时很有用2.6内核引入epoll机制,解决了poll和select的性能问题,并加入了一些新特性poll和select每次调用都需要所有被监听的文件描述符,内核需要遍历所有的文件描述符,当数量变大时,性能消耗巨大epoll将监听注册从实际监听中......
  • Linux系统基础(一):基础操作命令
    第一节Linux基础操作文章目录第一节Linux基础操作文件操作相关文件读取相关用户相关权限相关日志相关进程相关存储相关网络相关基本工具网络配置网络连接SSH文件操作相关opensslpasswd-1123openssl是一个开源加密工具包passwd指的是用于处理密码......
  • 3种在Linux命令行查看图像的方法
    在Linux中有很多GUI应用程序可以查看图像,但是这对经常使用命令行来工作的人可能会觉得很繁琐。今天要介绍的是3个实用的CLI图像查看器来在终端上查看图像,让那些使用CLI的朋友能更加高效地工作。1.FIMFIM是FbiIMproved的缩略语,意思是Fbi改进版。有些人可能还不......