项目名称
基于keepalived的双vip高可用web集群
项目架构图
项目环境
Centos7.9(1核1G),nginx-1.21.6,ansible 2.9.17,keepalived 2.0.10,Nginx-1.19.7,nfs-utils-1.3.0,bind-utils-9.11.4
项目描述
构建一个高可用的web集群,两台服务器使用nginx给三台real server做负载均衡,并在负载均衡器上使用keepalived实现双VIP做高可用,使用NFS保证real server的数据一致性,使用named搭建DNS服务器给两台负载均衡器做域名负载均衡。
项目步骤:
-
配置好nfs文件系统
#在web-1,web-2和web-3
[root@web-1 nginx]# yum install nfs-utils -y
#web-1上,更改exports配置文件
[root@web-1 ~]# echo “/usr/local/nginx/html 192.168.2.0/24(rw)” >>/etc/exports
[root@web-1 ~]# service nfs-server restart
#在web-2和web-3上挂载文件,但这样挂载重启后会失效,可以写入/etc/rc.local文件永久修改
[root@web-3 ~]# mount -t nfs 192.168.2.13:/usr/local/nginx/html /usr/local/wang/html
[root@web-2 ~]# mount -t nfs 192.168.2.13:/usr/local/nginx/html /usr/local/wang/html
[root@localhost html]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 1.7G 16G 10% /
/dev/sda1 xfs 1014M 138M 877M 14% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
192.168.2.13:/usr/local/liuxing/html nfs4 17G 2.5G 15G 15% /usr/local/wang/html
-
在LB-1和LB-2上更改配置文件,实现基于URL的七层负载均衡
upstream myweb{
server 192.168.2.13 fail_timeout=10s max_fails=2;
server 192.168.2.31 fail_timeout=10s max_fails=2;
server 192.168.2.38 fail_timeout=10s max_fails=2;
}
server {
listen 80;
server_name bannianmeichifan.com;
location / {
proxy_pass http://myweb;
}
}
-
在LB-1和LB-2上部署keepalived
[root@lb-1 logs]# install keepalived -y
[root@lb-1 logs]# vim /etc/keepalived/keepalived.conf
#vrrp_strict #需要注释掉
#设置两个实例,实现双VIP,互为主备
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.80
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.81
}
}
-
修改Windows主机下的C:\Windows\System32\drivers\etc\hosts文件,实现对双VIP的DNS负载均衡
#添加下面内容 192.168.2.80 bannianmeichifan.com 192.168.2.81 bannianmeichifan.com
-
搭建DNS服务器
[root@dns ~]# yum install bind* -y
#设置named服务开启自启动
[root@dns ~]# systemctl enable named
#修改主配置文件
[root@dns ~]# vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
# 修改/etc/named.rfc1912.zones文件,添加以下配置,添加域名解析
zone "bannianmeichifan.com" IN {
type master;
file "zone.bannianmeichifan.com";
allow-update { none; };
};
#添加一条解析记录
[root@dns named]# cd /var/named
[root@dns named]# cp named.localhost zone.bannianmeichifan.com -a
[root@dns named]# vimzone.bannianmeichifan.com
#添加以下配置
www A 192.168.2.81
www A 192.168.2.80
[root@dns named]# systemctl restart named
效果
-
查看效果
real server:
负载均衡器:
来直接上传(img-8WVpJA7N-1659271166927)(E:\桌面\Note\nginx\双VIPweb集群.assets\image-20220726222807482.png)]
-
压力测试(设置ulimit n 10000)
real server
负载均衡器 可以看到负载均衡器的CPU几乎跑满,而real server的性能过剩且测试的吞吐量与real server的配置(worker processes 1, worker_connections 10240)较为接近,应该提升负载均衡器的硬件配置,增加real server的并发连接数的限制。
|