Web服务器群集——LVS-NAT+Keepalived高可用集群

Posted Pakho`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web服务器群集——LVS-NAT+Keepalived高可用集群相关的知识,希望对你有一定的参考价值。

实验效果图

在这里插入图片描述

环境部署

IP地址主机
client192.168.1.32(桥接)
LVS1192.168.1.35(桥接)192.168.200.133(内网)
LVS2192.168.1.34(桥接)192.168.200.128(内网)
web1192.168.200.130(内网)
web2192.168.200.131(内网)
nfs192.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高可用集群的主要内容,如果未能解决你的问题,请参考以下文章

Linux——LVS-NAT负载均衡群集原理搭建大白话

LVS负载均衡之二:LVS-NAT搭建web群集

Web服务器群集——企业级调度器LVS(LVS-NAT,LVS-DR负载均衡集群配置)

CentOS7.4——构建LVS负载均衡群集—地址转换模式(LVS-NAT)

构建LVS-NAT负载均衡群集

LVS负载均衡群集(LVS-NAT)