十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
搭建keepalived+DR/NAT模式的高可用web群集,这篇博文以keepalived+DR的环境来搭建一个高可用的web服务群集。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的金水网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!相关技术文档可以去本人主页查看:https://blog.51cto.com/14227204 ,https://blog.51cto.com/14227204/2438901
环境如下:
一、环境分析:
1、2个调度器和2个web节点使用同一个网段地址,可以直接和外网通信。为了共享存储的
安全性,一般将web节点和存储服务器规划到内网环境,所以web节点必须有两个及以上
网卡的接口。
2、我这里资源有限,也为了配置方便,所以调度器和web节点分别只有两个,在web访问请
求量不大的情况下,足够了,但是若访问请求比较大,那么最少要分别配置三个调度器和
web节点,如果只有两个web节点的话,访问量又比较大,那么一旦有一个宕机了,那剩下
一个独苗必定会因为扛不住激增的访问请求,而被打死。
3、准备系统映像,以便安装相关服务。
4、自行配置防火墙策略和除了VIP之外的IP地址(我这里直接关闭了防火墙)。
5、keepalived会自动调用IP_vs模块,所以无需手动加载。
二、开始搭建:
配置主调度器:
[root@lvs1 /]# yum -y install ipvsadm keepalived # 安装keepalived 和 ipvsadm管理工具 [root@lvs1 keepalived]# vim /etc/sysctl.conf # 调整内核参数,关闭ICMP重定向 ........... net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 [root@lvs1 /]# sysctl -p # 刷新使配置生效 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 [root@lvs1 /]# cd /etc/keepalived/ [root@lvs1 keepalived]# cp keepalived.conf keepalived.conf.bak # 复制一份keepalived 主配文件作为备份,以免修改时出错 [root@lvs1 /]# vim /etc/keepalived/keepalived.conf # 编辑主配文件 ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc # 当出错时,将报错信息发送到的收件人地址,可根据需要填写 sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc #发件人姓名、地址(可不做修改) smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS1 #本服务器的名称改一下,在群集中所有调度器名称里必须唯一 } vrrp_instance VI_1 { state MASTER # 设为主调度器 interface ens33 #承载VIP地址的物理网卡接口根据实际情况改一下 virtual_router_id 51 priority 100 # 主调度器的优先级 advert_int 1 authentication { # 主 从热备认证信息 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 指定群集 VIP地址 200.0.0.100 } } virtual_server 200.0.0.100 80 { # 虚拟服务器地址(VIP) 端口 delay_loop 15 # 健康检查的间隔时间 lb_algo rr # 轮询调度算法 lb_kind DR # 指定工作模式,这里为DR,也可改为NAT ! persistence_timeout 50 #为了一会测试看到效果,将连接保持这行前加“ !”将该行注释掉 protocol TCP real_server 200.0.0.3 80 { # web节点的地址及端口 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 200.0.0.4 80 { # 另一 web节点地址及端口 weight 1 TCP_CHECK { connect_port 80 # 配置连接端口 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } [root@lvs1 /]# systemctl restart keepalived [root@lvs1 /]# systemctl enable keepalived主调度器到这就告一段落配置完成了:
配置从调度器:
[root@localhost /]# yum -y install keepalived ipvsadm [root@localhost /]# scp root@200.0.0.1:/etc/sysctl.conf /etc/ # 可通过scp命令将配置较繁杂的复制过来 root@200.0.0.1's password: sysctl.conf 100% 566 0.6KB/s 00:00 [root@localhost /]# sysctl -p [root@localhost /]# sysctl -p # 刷新使配置生效 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 [root@localhost /]# vim /etc/keepalived/keepalived.conf ...................... router_id LVS2 # route-id 要不一样 vrrp_instance VI_1 { state BACKUP # 状态改为 BACKUP 最好大写 interface ens33 # 网卡如果一样的话可不更改 virtual_router_id 51 priority 90 # 优先级要比主调度器小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { # 就需要改这些其他配置均与主调度器相同 200.0.0.100 } } [root@localhost /]# systemctl enable keepalived [root@localhost /]# systemctl restart keepalived # 重启服务使配置生效若需要部署多个从调度器,按照以上这个从(备份)调度器配置即可
web1节点配置:
[root@web1 /]# cd /etc/sysconfig/network-scripts/ [root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0 [root@web1 network-scripts]# vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=200.0.0.100 # VIP 地址 NETMASK=255.255.255.255 # 掩码为1 ONBOOT=yes [root@web1 network-scripts]# ifup lo:0 # 启动虚接口 [root@web1 network-scripts]# ifconfig lo:0 # 查看配置有无生效 lo:0: flags=73web2节点和web1节点配置相同,这里我就省略了,但是这里我为了方便看出验证效果,将web2的测试文件写为test2.com
若访问到的是同一页面,在排除配置上错误的情况下,可以打开多个网页,或者稍等一会再刷新,因为它可能有一个保持连接的时间,所以会存在延迟。
三、搭建 NFS 共享存储服务:
[root@nfs /]# mkdir opt/wwwroot [root@nfs /]# vim /etc/exports # 编写配置文件 /opt/wwwroot 192.168.1.0/24(rw,sync,no_root_squash) [root@nfs /]# systemctl restart nfs # 重启服务使配置生效 [root@nfs /]# systemctl restart rpcbind [root@nfs /]# showmount -e # 查看本机发布的挂载目录 Export list for nfs: /opt/wwwroot 192.168.1.0/24 [root@nfs /]# echo nfs.test.com > /opt/wwwroot/index.html所有节点挂载共享存储目录:
[root@web1 /]# showmount -e 192.168.1.5 # 查看共享服务器共享的所有目录 Export list for 192.168.1.5: /opt/wwwroot 192.168.1.0/24 [root@web1 /]# mount 192.168.1.5:/opt/wwwroot/ /var/www/html/ # 挂载到本地 [root@web1 /]# vim /etc/fstab #设置自动挂载 ......................... 192.168.1.5:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0web1和web2都需要挂载
1)VIP在哪个调度器上,查询该调度器承载VIP地址的物理接口,即可看到VIP地址(VIP地址在备份调度器上查不到的):
[root@LVS1 ~]# ip a show dev ens33 #查询承载VIP地址的物理网卡ens332: ens33:2)查询有哪些web节点:
[root@LVS1 ~]# ipvsadm -ln #查询web节点池及VIPIP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 200.0.0.100:80 rr 200.0.0.3:80 Route 1 0 0 200.0.0.4:80 Route 1 0 03)模拟Web2节点和主调度器宕机,并在备份调度器上再次查询VIP以及web节点:
[root@LVS2 ~]# ip a show dev ens33 #可以看到VIP地址已经转移到了备份调度器上2: ens33:4)查看调度器故障切换时的日志消息:
[root@LVS2 ~]# tail -30 /var/log/messages另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。