热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Keepalived+LVS高可用服务器

Keepalived为LVS调度器提供高可用功能,

“每个理性的IT人士都置顶了吴柯的运维笔记”


使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务:

  • 路由器对外公网IP地址为202.114.106.20

  • 路由器内网IP地址为192.168.0.254

  • 路由器需要设置SNAT及DNAT功能

  • LVS1调度器真实IP地址为192.168.0.10

  • LVS2调度器真实IP地址为192.168.0.20

  • 服务器VIP地址设置为192.168.0.253

  • 真实Web服务器地址分别为192.168.0.1、192.168.0.2

  • 使用加权轮询调度算法,真实服务器权重与其IP地址末尾数一致


使用5台虚拟机,1台作为Linux路由器、2台作为LVS调度器、2台作为Real Server、物理机作为客户端。


一:配置网络环境


1)设置Web服务器网络参数

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

  1. DEVICE=eth0

  2. OnBOOT=yes

  3. BOOTPROTO=static

  4. IPADDR=192.168.0.1

  5. NETMASK=255.255.255.0

  6. GATEWAY=192.168.0.254

  7. DNS1=202.106.0.20

# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

  1. DEVICE=lo:0

  2. OnBOOT=yes

  3. BOOTPROTO=static

  4. IPADDR=192.168.0.253

  5. NETMASK=255.255.255.255

# vim /etc/sysctl.conf

  1. .. ..

  2. net.ipv4.conf.all.arp_ignore = 1

  3. net.ipv4.conf.lo.arp_ignore = 1

  4. net.ipv4.conf.lo.arp_announce = 2

  5. net.ipv4.conf.all.arp_announce = 2

# sysctl -p

# systemctl restart NetworkManager


2)自定义Web页面

# echo “192.168.0.1” > /var/www/html/index.html


3)启动Web服务器软件

# systemctl start httpd;systemctl enable httpd


4设置LVS调度器网络参数

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

  1. DEVICE=eth0

  2. OnBOOT=yes

  3. BOOTPROTO=static

  4. IPADDR=192.168.0.10

  5. NETMASK=255.255.255.0

  6. GATEWAY=192.168.0.254

  7. DNS1=202.106.0.20

# systemctl restart NetworkManager


5)设置Linux路由器网络参数

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

  1. DEVICE=eth0

  2. OnBOOT=yes

  3. BOOTPROTO=static

  4. IPADDR=202.114.106.20

  5. DNS1=202.106.0.20

# vim /etc/sysconfig/network-scripts/ifcfg-eth1

  1. DEVICE=eth0

  2. OnBOOT=yes

  3. BOOTPROTO=static

  4. IPADDR=192.168.0.254

  5. NETMASK=255.255.255.0

  6. DNS1=202.106.0.20

# systemctl restart NetworkManager


6)设置Linux路由器


# sed -i '/ip_forward/s/0/1/'  sysctl.conf  //开启路由转发

# sysctl -p



二:调度器安装Keepalived与ipvsadm软件

注意:两台LVS调度器执行相同的操作。

安装软件

# yum install -y keepalived
# systemctl enable keepalived
# yum install -y ipvsadm



三:部署Keepalived实现LVS-DR模式调度器的高可用


1)LVS1调度器设置Keepalived,并启动服务

# vim /etc/keepalived/keepalived.conf

  1. global_defs {

  2. notification_email {

  3. admin@tarena.com.cn                //设置报警收件人邮箱

  4. }

  5. notification_email_from ka@localhost    //设置发件人

  6. smtp_server 127.0.0.1                //定义邮件服务器

  7. smtp_connect_timeout 30

  8. router_id  lvs1                        //设置路由ID号

  9. }

  10. vrrp_instance VI_1 {

  11. state MASTER                             //主服务器为MASTER

  12. interface eth0                        //定义网络接口

  13. virtual_router_id 50                    //主辅VRID号必须一致

  14. priority 100                         //服务器优先级

  15. advert_int 1

  16. authentication {

  17. auth_type pass

  18. auth_pass forlvs                       //主辅服务器密码必须一致

  19. }

  20. virtual_ipaddress {  192.168.0.253  }

  21. }

  22. virtual_server 192.168.0.253 80 {       //设置VIP为192.168.0.253

  23. delay_loop 6

  24. lb_algo wrr                          //设置LVS调度算法为RR

  25. lb_kind DR                               //设置LVS的模式为DR

  26. persistence_timeout 1

  27. protocol TCP

  28. real_server 192.168.0.1 80 {

  29. weight 1                          //设置权重为1

  30. TCP_CHECK {

  31.     connect_timeout 3

  32.     nb_get_retry 3

  33.     delay_before_retry 3

  34. }

  35. }

  36. real_server 192.168.0.2 80 {

  37. weight 2                          //设置权重为2

  38. TCP_CHECK {

  39.     connect_timeout 3

  40.     nb_get_retry 3

  41.     delay_before_retry 3

  42. }

  43. }

# systemctl start keepalived

# ipvsadm -Ln


2)LVS2调度器设置Keepalived(参照LVS1)



四:客户端测试

客户端使用curl命令反复连接http://202.114.106.20,查看访问的页面是否会轮询到不同的后端真实服务器。


推荐阅读:

案例:配置HAProxy负载平衡集群

如何部署LVS-NAT集群实现负载均衡?

部署Cacti监控平台实现网络监控

如何搭建nagios监控服务器?

Nagios的插件介绍

如何实现MySQL读写分离?

使用XtraBackup工具实现数据库备份

使用mysqldump实现数据备份与恢复

如何搭建phpMyAdmin管理平台?

python编写分析apache访问日志的脚本

吴柯的运维笔记

BY wukeyy18s

长按二维码关注我们吧





推荐阅读
author-avatar
dibaoejx
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有