基于 CentOS 7 构建 LVS-DR 群集 && 配置nginx负载均衡

环境配置:

|-------|-----|-----------------|
| RHCE | 客户机 | 192.168.100.146 |
| node1 | lvs | 192.168.100.145 |
| node2 | RS | 192.168.100.147 |
| node3 | RS | 192.168.100.148 |

配置ipvsadm httpd:

[root@node1 ~]# yum install ipvsadm.x86_64

[root@node2 ~]# yum install http -y

[root@node2 ~]# systemctl start httpd

[root@node3 ~]# yum install http -y

[root@node3 ~]# systemctl start httpd

配置LVS虚拟IP(VIP)

[root@node1 ~]# ifconfig ens33:200 192.168.100.200 netmask 255.255.255.0 up

将内容写入/var/www/html 测试httpd

**[root@node3 ~]# echo "web test page,ip is `hostname -I`" > /var/www/html/index.html

root@node3 \~\]# systemctl start httpd \[root@node3 \~\]# curl 192.168.100.148 web test page,ip is 192.168.100.148** **\[root@node2 \~\]# echo "web test page,ip is \`hostname -I\`" \> /var/www/html/index.html \[root@node2 \~\]# systemctl start httpd \[root@node2 \~\]# curl 192.168.100.147 web test page,ip is 192.168.100.147**

手工在RS端绑定VIP

root@node3 \~\]# ifconfig lo:200 192.168.100.200 netmask 255.255.255.255 up \[root@node2 \~\]# ifconfig lo:200 192.168.100.200 netmask 255.255.255.255 up

添加RS访问VIP路由

root@node2 \~\]# route add -host 192.168.100.200 dev lo \[root@node3 \~\]# route add -host 192.168.100.200 dev lo

手工在RS端一直ARP响应

调整内核参数

root@node3 all\]# echo "1" \> /proc/sys/net/ipv4/conf/lo/arp_ignore \[root@node3 all\]# echo "2" \> /proc/sys/net/ipv4/conf/lo/arp_announce \[root@node3 conf\]# echo "1" \> /proc/sys/net/ipv4/conf/all/arp_ignore \[root@node3 conf\]# echo "2" \> /proc/sys/net/ipv4/conf/all/arp_announce \[root@node3 \~\]# echo "1" \> /proc/sys/net/ipv4/conf/all/arp_ignore \[root@node3 \~\]# echo "2" \> /proc/sys/net/ipv4/conf/all/arp_announce \[root@node3 \~\]# echo "1" \> /proc/sys/net/ipv4/conf/lo/arp_ignore \[root@node3 \~\]# echo "2" \> /proc/sys/net/ipv4/conf/lo/arp_announce

arp_ignore- INTEGER

定义对目标地址为本地 IP 的 ARP 询问不同的应答模式
0 - (默认值):回应任何网络接口上对任何本地 IP 地址的 arp 查询请求。
1 -- 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求。
2 -- 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求,且来访 IP 必须在该网络接口的子网段内。
3 -- 不回应该网络界面的 arp 请求,而只对设置的唯一和连接地址做出回应。
4 -7 -- 保留未使用。
8 -- 不回应所有(本地地址)的 arp 查询。

手工执行配置添加LVS服务并增加两台RS

root@node1 \~\]# ipvsadm -A -t 192.168.100.200:80 -s rr \[root@node1 \~\]# ipvsadm -a -t 192.168.100.200:80 -r 192.168.100.147:80 -g \[root@node1 \~\]# ipvsadm -a -t 192.168.100.200:80 -r 192.168.100.148:80 -g

root@node1 \~\]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -\> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.100.200:80 rr -\> 172.168.100.147:80 Route 1 0 0 -\> 172.168.100.148:80 Route 1 0 0

客户机检测配置

root@RHCE \~\]# for ((i=1;i\<=6;i++)); do curl 192.168.100.200; done web test page,ip is 192.168.100.147 web test page,ip is 192.168.100.148 web test page,ip is 192.168.100.147 web test page,ip is 192.168.100.148 web test page,ip is 192.168.100.147 web test page,ip is 192.168.100.148

使用nginx配置负载均衡

|-------|-----------------|----------|
| RHCE | 192.168.100.146 | 负载均衡服务器 |
| node2 | 192.168.100.148 | nginx服务器 |
| node3 | 192.168.100.149 | nginx服务器 |

安装nginx可以使用如下仓库:

Go 复制代码
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

关闭防火墙 以及SELinux宽容模式

Go 复制代码
systemctl  stop   firewalld 

setenforce   0

启动服务并向主机 node2 node3 写入内容

Go 复制代码
systenctl start nginx    启动nginx服务

 echo "web test page ip is `hostname -I`" > /usr/share/nginx/html/index.html   #写入内容

systenctl start nginx    再次启动nginx服务

在RHCE负载均衡服务器上配置

Go 复制代码
 vim /etc/nginx/nginx.conf 

#在 http模块中写入如下内容

        server {
                listen  80;
                server_name test.ng.test;    定义域名  也可以用ip
                location / {
                        proxy_pass http://web_server;
                }
        }
        upstream web_server {
                server 192.168.100.148:80;     nginx服务器地址  
                server 192.168.100.149:80;
        }

测试结果:

相关推荐
藥瓿亭26 分钟前
K8S认证|CKS题库+答案| 5.日志审计
linux·运维·docker·云原生·容器·kubernetes·cka
coder_lorraine1 小时前
【Linux系列】Linux用户大揭秘:从“公寓住户”到“社区管理员”的奇幻之旅
linux
藥瓿锻1 小时前
2024 CKA题库+详尽解析| 15、备份还原Etcd
linux·运维·数据库·docker·容器·kubernetes·cka
bbsh20991 小时前
WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤
linux·ubuntu·.netcore·webfuture
ZZZKKKRTSAE2 小时前
快速上手Linux全局搜索正则表达式(grep)
linux·服务器·正则表达式
waving-black3 小时前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha3 小时前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
筏.k4 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao4 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC4 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows