Web服务器群集——LVS-NAT+Keepalived高可用集群
Posted Pakho`
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web服务器群集——LVS-NAT+Keepalived高可用集群相关的知识,希望对你有一定的参考价值。
LVS-NAT+Keepalived高可用集群
实验效果图
环境部署
IP地址 | 主机 |
---|---|
client | 192.168.1.32(桥接) |
LVS1 | 192.168.1.35(桥接)192.168.200.133(内网) |
LVS2 | 192.168.1.34(桥接)192.168.200.128(内网) |
web1 | 192.168.200.130(内网) |
web2 | 192.168.200.131(内网) |
nfs | 192.168.200.132(内网) |
#安装nfs服务
[root@nfs ~]# yum -y install nfs-utils
[root@web1 ~]# yum -y install nfs-utils
[root@web2 ~]# yum -y install nfs-utils
#lvs集群
yum -y install ipvsadm keepalived
LVS-NAT配置
#lvs1
[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf
!Configuration File for keepalived #keepalived配置文件文档声明
global_defs { #全局配置
route_id lvs-keepalived #路由器编号,设备在组中的标识
}
vrrp_instance VI_1 { #VRRP模块实例 VI_1,实例名,两台路由器相同
state MASTER #主或从状态
interface ens34 #监控心跳网卡,本实验指内网
virtual_router_id 81 #虚拟路由编号,主备一致
priority 100 #优先级
advert_int 1 #心跳间隔/秒
authentication { #认证模块
auth_type PASS #认证类型为密码认证
auth_pass 1111 #认证密码1111
}
virtual_ipaddress { #VIP
192.168.200.200/24 dev ens34 #内网虚拟IP地址
}
}
#LVS-NAT
virtual_server 192.168.200.200 80 { #对应VIP
delay_loop 3 #服务轮询时间间隔,每三秒测试真实服务器是否存活
lb_algo rr #负载均衡策略算法 rr:轮询
lb_kind NAT #LVS集群模式 DR
nat_mask 255.255.255.0
protocol TCP #协议为TCP协议
real_server 192.168.200.130 80 { #真实后端服务器
weight 1 #权重1
inhibit_on_failure #监视真实服务器的情况在挂掉的情况下可以不转发给这个服务器
TCP_CHECK { #TCP校验
connect_port 80
connect_timeout 3 #健康检查方式,连接超时时间,与delay_loop配合使用
}
}
real_server 192.168.200.131 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_port 80
connect_timeout 3
}
}
}
vrrp_instance VI_2 { #VRRP模块实例 VI_2,实例名,两台路由器相同
state MASTER #主或从状态
interface ens32 #监控心跳网卡,本实验指外网
virtual_router_id 82 #虚拟路由编号,主备一致
priority 100 #优先级
advert_int 1 #心跳间隔/秒
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress { #VIP
192.168.1.100/24 dev ens32 #外网虚拟IP地址
}
}
#lvs2
[root@lvs2 ~]# vim /etc/keepalived/keepalived.conf
!Configuration File for keepalived
global_defs {
route_id lvs-keepalived
}
vrrp_instance VI_1 {
state BACKUP
interface ens34
virtual_router_id 81
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.200/24 dev ens34
}
}
#LVS-NAT
virtual_server 192.168.200.200 80 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
protocol TCP
real_server 192.168.200.130 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_port 80
connect_timeout 3
}
}
real_server 192.168.200.131 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_port 80
connect_timeout 3
}
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens32
virtual_router_id 82
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
192.168.1.100/24 dev ens32
}
}
#开启路由转发
[root@lvs1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@lvs1 ~]# sysctl -p
[root@lvs2 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@lvs2 ~]# sysctl -p
#设置开机自启并立即启动
[root@lvs1 ~]# systemctl enable keepalived --now
[root@lvs2 ~]# systemctl enable keepalived --now
#配置完成后重启
systemctl status keepalived
#web服务器测试与vip通信
[root@web1 ~]# ping 192.168.200.200
#配置路由功能和负载策略
[root@lvs1 ~]# ipvsadm -A -t 192.168.1.100:80 -s rr #-A:对外提供的地址 -t:tcp -s:策略 rr:轮巡
[root@lvs1 ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.200.130:80 -m #-a:对内真实服务器 -r:真实 -m:地址伪装
[root@lvs1 ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.200.131:80 -m
[root@lvs2 ~]# ipvsadm -A -t 192.168.1.100:80 -s rr
[root@lvs2 ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.200.130:80 -m
[root@lvs2 ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.200.131:80 -m
nginx安装及配置
[root@web1 ~]# rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm
[root@web1 ~]# systemctl enable nginx --now
[root@web1 ~]# echo web1 > /usr/share/nginx/html/index.html
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
GATEWAY="192.168.200.200" #网关对应vip
[root@web2 ~]# rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm
[root@web2 ~]# systemctl enable nginx --now
[root@web2 ~]# echo web2 > /usr/share/nginx/html/index.html
[root@web2 ~]# route add -net 192.168.0.0/24 gw 192.168.200.200
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
GATEWAY="192.168.200.200" #网关对应vip
#客户端测试
[root@client ~]# elinks --dump http://192.168.1.100
web2
[root@client ~]# elinks --dump http://192.168.1.100
web1
[root@client ~]# elinks --dump http://192.168.1.100
web2
[root@client ~]# elinks --dump http://192.168.1.100
web1
NFS服务配置
#nfs配置
[root@nfs ~]# mkdir -p /mnt/nfstest #创建共享目录
[root@nfs ~]# echo 611 > /mnt/nfstest/index.html #为共享文件插入测试内容
[root@nfs ~]# vim /etc/exports #进入nfs主配置文件,默认空文件
/mnt/nfstest 192.168.200.0/24(rw,sync,no_root_squash) #rw:允许读写 sync:表示同步写入
[root@nfs ~]# systemctl start nfs-server.service #启动nfs服务
[root@nfs ~]# exportfs -v #检查nfs输出是否正常
/mnt/nfstest 192.168.200.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
#网页服务器集群配置
[root@web1 ~]# showmount -e 192.168.200.132 #检查共享端共享
Export list for 192.168.200.132:
/mnt/nfstest 192.168.200.0/24
[root@web1 ~]# mount -t nfs 192.168.200.132:/mnt/nfstest /usr/share/nginx/html/
[root@web2 ~]# showmount -e 192.168.200.132
Export list for 192.168.200.132:
/mnt/nfstest 192.168.200.0/24
[root@web2 ~]# mount -t nfs 192.168.200.132:/mnt/nfstest /usr/share/nginx/html/ #手动挂载
df-hT
192.168.200.132:/mnt/nfstest nfs4 17G 1.6G 16G 9% /usr/share/nginx/html
- rw:允许读写
- ro:只读
- sync:表示同步写入
- no_root_squash:表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)ps:因为nfs系统用户权限很低加上后不作降权处理
#客户端测试
[root@client ~]# elinks --dump http://192.168.1.100
611
[root@client ~]# elinks --dump http://192.168.1.100
611
以上是关于Web服务器群集——LVS-NAT+Keepalived高可用集群的主要内容,如果未能解决你的问题,请参考以下文章
Web服务器群集——企业级调度器LVS(LVS-NAT,LVS-DR负载均衡集群配置)