02架构 05.1 nginx 负载均衡

负载均衡

理论

# 负载均衡 --- Load Balance [loʊd ˈbæləns]

# 负载均衡的提供商
ULB:ucloud
SLB:阿里云
CLB:腾讯云
QLB:七牛云
ECS-业务服务器
OSS-数据存储服务器,类似NFS
Redis-缓存
RDS-关系型数据库
CDN-内容分发网络,各地建立缓存服务器

# 负载均衡的作用
将收到的请求,平均分配到后端服务器,当一台服务器出现问题,不影响业务
提高并发,提升响应速度,高容灾性


# 负载均衡类型
	# 4层负载均衡不识别域名
传输层
网络层
数据链路层
物理层
4层负载均衡只管接收请求后交给后方

	# 7层负载均衡识别域名
应用层:协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层:数据的表示、安全、压缩。格式有,JPEG、ASCll、DECOIC、加密格式等
会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话
传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层:建立、维护、断开物理连接。
7层负载均衡会解开数据包然后根据内容交给对应的业务服务器

# 常用负载均衡软件
nginx:1.9版本之前只支持7层负载均衡,1.9版本之后支持四层和七层,因为多了一个stream模块

Haproxy:支持四层负载均衡和七层负载均衡,是一个专业的负载均衡软件

LVS:专业的四层负载均衡服务器 ipvsadm 命令 将服务器变成一台“硬件负载均衡”

F5:硬件负载均衡服务器

4层负载均衡

1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;

2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)!!!!

3、四层负载均衡可以解决七层负载均衡单点故障问题;(多台后端七层负载均衡能同时的使用)

4、四层的转发效率比七层的高得多,但仅支持tcp/ip/udp协议,不支持http和https协议;

5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。

在这里插入图片描述

1、安装官方源Nginx

vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

yum -y install nginx

	#先设置官方源Nginx的repo仓库再进行安装Nginx,不然会报错【如下错误提示】
[root@4lb01 ~]# nginx -t
nginx: [emerg] unknown directive "stream" in /etc/nginx/stream/4lb.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed

2、删除默认的7层Nginx配置文件
rm -f /etc/nginx/conf.d/default.conf

3、编辑Nginx主配置文件
vim /etc/nginx/nginx.conf
......
events {
   }	#事件驱动模块
include /etc/nginx/stream/*.conf;		#增加包含4层配置文件路径
http {
   }		#http内核模块
......

4、创建4层配置文件的目录
mkdir /etc/nginx/stream/

5、编辑4层配置文件
# stream 以模块的形式向开发者们提供一组实现通信协议的工具,这里就是Nginx的实现代理的模块
# 由于4层只能进行端口转发,并不解开数据包,所以建议这里80转80,443转443,然后由7层负载均衡去处理数据包具体请求
vim /etc/nginx/stream/4lb.conf
stream {
   
	#日志包含内容,去下面网址找需要的对应变量
	#http://nginx.org/en/docs/stream/ngx_stream_core_module.html
    log_format  proxy '$remote_addr $remote_port - [$time_local] $status $protocol ' '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"';
    #日志路径
    access_log /var/log/nginx/proxy.log proxy;
    #通过代理实现负载均衡,为后端服务器集群设置一个名称
    upstream lb {
   
        server 10.0.0.5:80;
        server 10.0.0.6:80;
    }

    upstream lb2 {
   
        server 10.0.0.5:443;
        server 10.0.0.6:443;
    }

    server {
   
    	#监听本机端口
        listen 80;
        #当用户访问本机80端口时就转到被代理的后方7层负载均衡
        proxy_pass lb;
    }
    
    server {
   
    	#监听本机端口
        listen 443;
        #当用户访问本机443端口时就转到被代理的后方7层负载均衡
        proxy_pass lb2;
    }
}

6、启动并检查 nginx 开启状态
systemctl enable nginx
systemctl start nginx && systemctl status nginx

-----------------------------------------------
# 利用端口转发 连接内网其他主机【作为跳板机的时候用】
stream {
   
    upstream ssh {
   
        server 10.0.0.7:22;
    }

    server {
   
        listen 7777;
        proxy_pass ssh;
    }
}

# 利用端口转发 连接 mysql
stream {
   
    upstream mysql {
   
        server 10.0.0.51:3306;
    }

    server {
   
        listen 8888;
        proxy_pass mysql;
    }
}
-----------------------------------------------


6、访问4层负载均衡的7777和8888端口,测试端口转发是否正常
#用xshell测试访问7777端口连接web01的22端口
ssh 10.0.0.5 7777
#用Navicat软件测试8888端口连接数据库
10.0.0.5 8888

7、打开防火墙
#禁用防火墙
[root@web01 ~]# systemctl mask iptables.service 
Created symlink from /etc/systemd/system/iptables.service to /dev/null.
#取消禁用防火墙
[root@web01 ~]# systemctl unmask iptables.service 
Removed symlink /etc/systemd/system/iptables.service.
#启动防火墙并加入开机自启
systemctl start firewalld
systemctl enable firewalld
#查看防火墙默认区域配置
firewall-cmd --list-all
#设置防火墙白名单
firewall-cmd --permanent --add-source=10.0.0.1 --zone=trusted
#配置默认区域拒绝所有访问
firewall-cmd --permanent --remove-s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值