基于 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

ipvs查看配置状态

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;
        }

测试结果:

相关推荐
琥珀色糖4 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
开心大爆炸8 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun28 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng9 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery9 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败9 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW9 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li9 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng10 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
额额额对了10 小时前
Linux 进程间通信(IPC)核心机制:消息队列、共享内存与信号量详解
linux·网络·网络协议