两台LVS服务器(主从)
基础依赖安装
yuminstallgcc
yum -y install openssl-devel
yum -y install libnl libnl-devel
yuminstall -y libnfnetlink-devel
yum -y install net-tools
yuminstall vim -y
安装keepalived 和 ipvsadm
yuminstall -y keepalived ipvsadm
LVS-Master服务器
修改Keepalived配置:
vim /etc/keepalived/keepalived.conf
复制以下配置覆盖进去
注意:real_server填写的是Nginx服务器的IP地址
global_defs
router_id LVS_MASTER # 设置lvs的id,在一个网络内应该是唯一的
vrrp_instance VI_1 { state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写 interface ens33 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看 virtual_router_id 51 #虚拟路由编号,主备要一致 priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR advert_int 1 #检查间隔,默认为1s authentication { auth_type PASS auth_pass 12345678 } virtual_ipaddress { 192.168.174.128/24 #定义虚拟IP(VIP)为192.168.174.128,可多设,每行一个 } }
# 定义对外提供服务的LVS的VIP以及port virtual_server 192.168.174.128 80 { delay_loop 6 # 设置健康检查时间,单位是秒 lb_algo rr # 设置负载调度的算法为wlc lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式 nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 192.168.88.137 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.88.139 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
LVS-BackUp服务器
修改Keepalived配置:
vim /etc/keepalived/keepalived.conf
复制以下配置覆盖进去
注意:real_server填写的是Nginx服务器的IP地址,state改为BACKUP,priority改为比Master小。
global_defs {
router_id LVS_SLAVE # 设置lvs的id,在一个网络内应该是唯一的
vrrp_instance VI_1 { state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写 interface ens33 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看 virtual_router_id 51 #虚拟路由编号,主备要一致 priority 50 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR advert_int 1 #检查间隔,默认为1s authentication { auth_type PASS auth_pass 12345678 } virtual_ipaddress { 192.168.174.128/24 #定义虚拟IP(VIP)为192.168.174.128,可多设,每行一个 } }
# 定义对外提供服务的LVS的VIP以及port virtual_server 192.168.174.128 80 { delay_loop 6 # 设置健康检查时间,单位是秒 lb_algo rr # 设置负载调度的算法为wlc lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式 nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 192.168.88.137 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.88.139 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
两台Nginx服务器
执行以下命令
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
填写以下配置并保存
DEVICE=lo:0
IPADDR=192.168.88.128
NETMASK=255.255.255.255
BROADCAST=192.168.88.128
ONBOOT=yes
NAME=lvs_vip
修改ARP
vim /etc/sysctl.conf
填写配置并保存
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
重启网卡
sysctl -p
systemctl restart network
那么以上关于LVS部分就搭建好了。
Nginx的部署
在两台Nginx服务器都执行以下指令
添加源并安装
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
填写Nginx配置
把http里【#开始】到【#结束】这段拷贝进去就可以了。
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { #开始 upstream 192.168.88.139{ server localhost:5001 weight=1; server localhost:5002 weight=1; } server { listen 80; server_name 192.168.88.139; charset utf8; client_max_body_size 50m; client_body_buffer_size 256k; location / { proxy_pass http://192.168.88.139; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } } #结束 } 设置开机启动 systemctl start nginx.service systemctl enable nginx.service 重启防火墙 firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload 以上关于Nginx的部分就完成了搭建。可以通过以下指令查看LVS的调度与连接信息。 查看LVS调度信息 ipvsadm -Ln 查看LVS连接信息 ipvsadm -Lnc
.Net Core部署
添加下载源:
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
下载安装:
sudo yum install aspnetcore-runtime-2.2
通过FTP把Web站点文件复制两份并上传到服务器,然后启动后台进程:
nohup dotnet Test1.dll --server.urls "http://*:5001" &
nohup dotnet Test1.dll --server.urls "http://*:5002" &
FTP服务器的部署
安装FTP服务器:
yum install -y vsftpd
修改配置:
vim /etc/vsftpd/vsftpd.conf
把已有的三项配置修改了:
anonymous_enable=NO
listen=YES
#listen_ipv6=YES
启动
systemctl start vsftpd
systemctl enable vsftpd
重启防火墙
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
允许root登录,把以下两个文件的root注释了
vim /etc/vsftpd/user_list
vim /etc/vsftpd/ftpusers
#root
关掉selinux,会影响上传
setenforce 0
vim /etc/selinux/config
#将SELINUX=enforcing改为SELINUX=permissive
FTP客户端—FileZilla下载地址
https://filezilla-project.org/download.php?type=client
结束
以上为本篇的所有内容了,负载均衡在实际工作中涉及的地方挺多的,因此我将分为上下两篇,该篇为负载均衡的上篇主要从大方向DNS、LVS、Nginx进行了分享,下篇会从微服务架构里使用到的组件API网关和注册中心进行探讨,如果大家在实践上遇到任何问题,或者有更好的建议可以到评论反馈给我。