linux 改路由表 宕机,网管宕机,服务停止?别担心,解决方案来了

本文以LVS + keepalived 实现基于keepalived的LVS的高可用

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);    十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现

简单介绍keepalived:keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。之所以说keepalived是轻量级的,是相对于corosync + ldirectord来说的。keepalived也可以实现高可用集群,而且配置起来比corosync + ldirectord简单方便很多,keepalived与corosync的工作机制相差很多。corosync + ldirectord实现的功能虽然强大,但配置起来比较麻烦,而keepalived功能虽然简单,但配置起来比较容易。也就是说keepalived可实现corosync + ldirectord实现的功能,只不过前者没有后者功能强大而已

这里有一个网上图片,以便可以详细的了解工作流程

b45d3f4ad489a46f63711b30faac62f6.png

大致规划:

web-real  server1    172.16.14.3    node1.magedu.com

web-real  server2    172.16.14.4    node2.magedu.com

LVS-DR    vip        172.16.14.1

LVS-DR-master        172.16.14.5    node1.magedu.com

LVS-DR-salve         172.16.14.6    node2.magedu.com

首先需要下载keepalived-1.2.7-5.el5.i386.rpm

一、准备两台real server,安装httpd服务(172.16.14.3 node1.magedu.com)

172.16.14.4 node2.magedu.com)

# yum -y install httpd

# echo "node1.magedu.com" > /var/www/html/index.html

# setenforce 0 关闭selinux

# service httpd start 启动服务

进行测试

6dc2b63523815b3df23751fa7e5d053a.png

在real server2上安装http服务(172.16.14.4 node2.magedu.com)

# yum -y install httpd

# echo "node2.magedu.com" > /var/www/html/index.html

# setenforce 0 关闭selinux

# service httpd start

进行测试

c19626a34db348eb90f304003e8c5baa.png

现在real server的http服务就准备好啦。

二、安装keepalived服务(172.16.14.5 node1.magedu.com)

# yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm

# yum -y install ipvsadm

修改配置文件

#    vim /etc/keepalived/keepalived.conf进行配置keepalived

# cd /etc/keepalived/

# cp keepalived.conf keepalived.conf.bak #做备份,出错时,还可以恢复

# vim keepalived

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost #管理员邮箱

}

notification_email_from keepalived@localhost #发件人邮箱

smtp_server 127.0.0.1 #邮箱地址

smtp_connect_timeout 30 #邮箱连接超时时间

router_id LVS_DEVEL #router_id是从LVS_DEVEL直接获取

}

vrrp_instance VI_1 { #虚拟路由

state MASTER #状态

interface eth0 #虚拟路由工作于哪个接口

virtual_router_id 55 #vid

priority 101 #优先级,要高于被节点,减去2后,低于被节点

advert_int 1 #认证

authentication {

auth_type PASS

auth_pass password

}

virtual_ipaddress {

172.16.14.1/16 dev eth0 label eth0:0

} #虚拟地址

virtual_server 172.16.14.1 80 { #虚拟服务的地址,及监听端口

delay_loop 6

lb_algo rr

lb_kind DR

nat_mask 255.255.0.0 #子网掩码

persistence_timeout 50

protocol TCP

real_server 172.16.14.3 80 {

weight 1

HTTP_GET { #进行健康检查的方法

url {

path / #获取主页面

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.16.14.3 80 {

weight 1

HTTP_GET { #进行健康检查的方法

url {

path / #获取主页面

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

复制keepalived.conf配置文件到从节点上# scp keepalived.conf node2:/etc/keepalived/

在从节点上,修改其配置文件(172.16.14.6 node2.magedu.com)

# cd /etc/keepalived/

# vim keepalived.conf

修改如下行

state BACKUP

priority 100

重启keepalived服务,并查看ipvsadm规则,看是否成功(因为安装keepalived服务,会自动在服务上生成ipvs规则,基于LVS,达到ip地址的高可用)(172.16.14.5 172.16.14.6)

# service keepalived restart

查看规则

65e47a5b0a0c60d864d3a6deb67b2b3b.png

手动模拟 resal server1宕机,再进行查看ipvs规则

ef70e376fb921fb73698fd9f47f1e6b5.png

ipvs规则里就只剩下了node2(172.16.14.4)了

9b4db603b672fcc7eb2a3f063d11cbf1.png

1.模拟real server 都宕机时,服务器出现错误页面

在keepalived服务器上安装http服务器,安装提示错误的页面(172.16.14.5 node1.magedu.com

172.16.14.6 node2.magedu.com)

# yum -y install httpd

# echo "error" > /var/www/html/index.html

# setenforce 0 关闭selinux

# scp /var/www/html/index.html node2:/var/www/html/index.html

# service httpd start

编译配配置文件/etc/keepalived/keepalived.conf(172.16.14.5 172.16.14.6)

在rea_server前面加上一行:

sorry_server 127.0.0.1 80

# service keepalived restart

停止real server上的http服务,查看172.16.14.1会出现怎么样的页面

c5216b783587683b296f8a7215003c1e.png

2.自写检测脚本,完成维护模式切换

使用维护模式,模拟节点1宕机

vrrp_script chk_schedown {

script "[ -e /etc/keepalived/down ] && exit 1 || exit 0"

interval 1

weight -5

fall 2

rise 1

}

在 virtual_ipaddress {

172.16.14.1/16 dev eth0 label eth0:0

}

添加如下行:

track_script{

chk_schedown

}

重启keepalived服务,查看节点1(172.16.14.5)的ip地址

a4b73738ce99720444018aa2d628a157.png

手动编辑down文件,重启服务,模拟主节点宕机# cd /etc/keepalived

# touch down

d3de122fc68ea87c261f8301f0f877a3.png

查看ip地址.eth0:0就运行于从节点啦

6ed35ba4a214f16d609ccdc12469181f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值