概述

  Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
Keepalived的官方网站位于http://www.keepalived.org/
Keepalived的热备方式
  Keepalived采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟ip地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件(如eth0:0)而是由Keepalived根据配置文件自动管理。

(一主多从之间的优先级不能相同,否则会产生''脑裂"或"裂脑")

Keepalived的安装与服务控制

1.安装支持软件

在编译安装Keepallved之前,必须先安装内核开发包kernel-devel,以及openss1一devel、popt-devel等支持库。除此之外,在LVS群集环境中应用时,也需要用到rpvsadm管理工具。

  1. [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
  2. [root@Keepalived ~]# yum -y install ipvsadm

2.编译安装keepalived

  1. [root@Keepalived ~]# tar zxvf keepalived-1.2..tar.gz -C /usr/src/
  2. [root@Keepalived ~]# cd /usr/src/keepalived-1.2./
  3. [root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.-.el6.x86_64/
  4. [root@Keepalived keepalived-1.2.13]# make
  5. [root@Keepalived keepalived-1.2.13]# make install

只有使用LVS时才需要参数 --with-kernel-dir

3.使用Keepalived服务

  1. [root@Keepalived ~]# ls - /etc/init.d/keepalived
  2. -rwxr-xr-x root root 11 : /etc/init.d/keepalived
  3. [root@Keepalived ~]# chkconfig --add keepalived
  4. [root@Keepalived ~]# chkconfig keepalived on

配置文件:

  Keepalived服务的配置目录位于/etc/Keepalived/。其中Keepalived.conf是主配置文件;另外包括一个子目录samples/,提供了许多配置样例参考。在Keepalived的配置文件中,使用“global_defs {...}"区段指定全局参数,使用“vrrp_instance 实例名称 {...}"区段指定VRRR热备参数,注释文字以“!”符号开头。
  在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括路由器名称,虚拟路由器的ID号,认证信息,漂移地址,心跳频率等。不同之处主要在于路由器名称热备状态,优先级。

  • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称;
  • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为备用服务器;
  • 优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突;
  1. !全局配置
  2. global_defs {
  3. router_id LVS_HA_R1 //主调度器的名称
  4. }
  5. !虚拟实例配置
  6. vrrp_instance VI_1 {
  7. state MASTER //主调度器的热备状态(MASTER/BACKUP)
  8. interface eth0 //承载VIP地址的物理接口
  9. virtual_router_id //虚拟路由器的ID号,每个热备组保持一致
  10. priority //主调度器的优先级
  11. advert_int //通告间隔秒数(心跳频率)
  12. authentication { //主、从热备认证信息(每个热备组保持一致)
  13. auth_type PASS //认证类型
  14. auth_pass //密码子串
  15. }
  16. virtual_ipaddress {
  17. 172.16.1.130 //指定集群VIP地址,可以有多个
  18. }
  19. }
  20.  
  21. !Web服务器池配置
  22. virtual_server 172.16.1.130 { //虚拟服务器地址(VIP)、端口
  23. delay_loop //健康检查时间的间隔(秒)
  24. lb_algo rr //调度算法(轮询(rr))
  25. lb_kind DR //群集工作模式,(DR/NAT)
  26. persistence //连接保持时间(秒
  27. protocol TCP //应用服务采用的是TCP协议
  28. real_server 172.16.1.131 { //第一个Web节点的地址、端口
  29. weight //节点权重
  30. TCP_CHECK { //健康检查方式
  31. connect_port //检查的目标端口
  32. connect_timeout //连接超时(秒)
  33. nb_get_retry //重试次数
  34. delay_before_retry //重试间隔(秒)
  35. }
  36. }
  37. real_server 172.16.1.132 { //第二个Web节点的地址、端口
  38. ......//省略部分信息
  39. }
  40. real_server 172.16.1.133 { //第三个Web节点的地址、端口
  41. ......//省略部分信息
  42. }
  43. real_server 172.16.1.134 { //第四个Web节点的地址、端口
  44. ......//省略部分信息
  45. }
  46. }

keepalived.conf

Keepalived+LVS(NAT模式)

不需要配置LVS,因为keepalived去调用LVS内核模块

1.配置IP

略,Web服务器和Client客户端需要指定网关,都为VIP地址

2.配置Keepalived服务器(主-从)

1)调整响应参数

  1. [root@Keepalived ~]# vim /etc/sysctl.conf
  2. 修改:
  3. net.ipv4.ip_forward =
  4. 添加:
  5. net.ipv4.conf.all.send_redirects =
  6. net.ipv4.conf.default.send_redirects =
  7. net.ipv4.conf.eth0.send_redirects =
  8. [root@Keepalived ~]# sysctl -p

2)安装Keepalived软件与ipvsadm管理工具

  1. [root@Keepalived ~]# yum -y install ipvsadm
  2. [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
  3. [root@Keepalived ~]# tar zxvf keepalived-1.2..tar.gz -C /usr/src/
  4. [root@Keepalived ~]# cd /usr/src/keepalived-1.2./
  5. [root@Keepalived keepalived-1.2.]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.-.el6.x86_64/
  6. [root@Keepalived keepalived-1.2.]# make
  7. [root@Keepalived keepalived-1.2.]# make install
  8. [root@Keepalived ~]# chkconfig --add keepalived
  9. [root@Keepalived ~]# chkconfig keepalived on

3)配置Keepalived

(1)全局配置、热备配置

  1. [root@Keepalived ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
  2. [root@Keepalived ~]# vim /etc/keepalived/keepalived.conf
  1. global_defs {
  2. router_id LVS_MSATER_1 //主调度器的名称
  3. }
  4.  
  5. vrrp_instance VI_1 { //第一个实例的配置(VIP:1.1.1.1)
  6. state MASTER //主调度器的热备状态
  7. interface eth0 //本网段提供服务的网卡设备名称
  8. virtual_router_id
  9. priority //主调度器的优先级
  10. advert_int
  11. authentication {
  12. auth_type PASS
  13. auth_pass
  14. }
  15. virtual_ipaddress {
  16. 1.1.1.1 //VIP地址配置
  17. }
  18. }
  19.  
  20. vrrp_instance VI_1 { //第二个实例的配置(VIP:192.168.10.1)
  21. state MASTER
  22. interface eth1
  23. virtual_router_id
  24. priority
  25. advert_int
  26. authentication {
  27. auth_type PASS
  28. auth_pass
  29. }
  30. virtual_ipaddress {
  31. 192.168.10.1
  32. }
  33. }

Master

  1. ! Configuration File for keepalived
  2.  
  3. global_defs {
  4. router_id LVS_Savle_1 //修改
  5. }
  6.  
  7. vrrp_instance VI_1 {
  8. state BACKUP //修改
  9. interface eth0
  10. virtual_router_id
  11. priority //修改
  12. advert_int
  13. authentication {
  14. auth_type PASS
  15. auth_pass
  16. }
  17. virtual_ipaddress {
  18. 1.1.1.1
  19. }
  20. }
  21.  
  22. vrrp_instance VI_1 {
  23. state BACKUP //修改
  24. interface eth2
  25. virtual_router_id
  26. priority //修改
  27. advert_int
  28. authentication {
  29. auth_type PASS
  30. auth_pass
  31. }
  32. virtual_ipaddress {
  33. 192.168.10.1
  34. }
  35. }

Savle

(2)Web服务器池配置

  1. virtual_server 1.1.1.1 {
  2. delay_loop
  3. lb_algo rr
  4. lb_kind NAT
  5. protocol TCP
  6. real_server 192.168.10.100 {
  7. weight
  8. TCP_CHECK {
  9. connect_port
  10. connect_timeout
  11. nb_get_retry
  12. delay_before_retry
  13. }
  14. }
  15. real_server 192.168.10.200 {
  16. weight
  17. TCP_CHECK {
  18. connect_port
  19. connect_timeout
  20. nb_get_retry
  21. delay_before_retry
  22. }
  23. }
  24. }

Master--Savle

使用ip工具可以查看漂移IP(主)

  1. [root@Keepalived ~]# ip a
  2. ......
  3. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  4. link/ether :0c:::d4:5c brd ff:ff:ff:ff:ff:ff
  5. inet 1.1.1.10/ brd 1.255.255.255 scope global eth0
  6. inet 1.1.1.1/ scope global eth0
  7. inet6 fe80::20c:29ff:fe85:d45c/ scope link
  8. valid_lft forever preferred_lft forever: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  9. link/ether :0c:::d4: brd ff:ff:ff:ff:ff:ff
  10. inet 192.168.10.10/ brd 192.168.10.255 scope global eth2
  11. inet 192.168.10.1/ scope global eth2
  12. inet6 fe80::20c:29ff:fe85:d470/ scope link
  13. valid_lft forever preferred_lft forever

5)配置Web节点服务器(各Web服务器配置相同)

安装httpd服务,创建测试页面,并启动httpd服务

  1. [root@Web1 ~]#echo "LVS test 1" > /var/www/html/index.html //第一个web服务器内容
  2. [root@Web2 ~]#echo "LVS test 2" > /var/www/html/index.html //第二个web服务器内容

Keepalived+LVS(DR模式)

1.配置IP地址

2.配置Keeplives服务器(主--从)

1)调整响应参数

  1. [root@Keepalived ~]# vim /etc/sysctl.conf
  2. 添加:
  3. net.ipv4.conf.all.send_redirects =
  4. net.ipv4.conf.default.send_redirects =
  5. net.ipv4.conf.eth0.send_redirects =
  6. [root@Keepalived ~]# sysctl -p

2)安装Keepalived软件与ipvsadm管理工具

  1. [root@Keepalived ~]# yum -y install ipvsadm
  2. [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
  3. [root@Keepalived ~]# tar zxvf keepalived-1.2.13.tar.gz -C /usr/src/
  4. [root@Keepalived ~]# cd /usr/src/keepalived-1.2.13/
  5. [root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
  6. [root@Keepalived keepalived-1.2.13]# make
  7. [root@Keepalived keepalived-1.2.13]# make install
  8. [root@Keepalived ~]# chkconfig --add keepalived
  9. [root@Keepalived ~]# chkconfig keepalived on

3)配置Keepalived

(1)全局配置、热备配置

  1. [root@Keepalived ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
  2. [root@Keepalived ~]# vim /etc/keepalived/keepalived.conf
  1. global_defs {
  2. router_id LVS_MSATER_1 //主调度器的名称
  3. }
  4.  
  5. vrrp_instance VI_1 { //第一个实例的配置(VIP:1.1.1.1)
  6. state MASTER //主调度器的热备状态
  7. interface eth0 //本网段提供服务的网卡设备名称
  8. virtual_router_id
  9. priority //主调度器的优先级
  10. advert_int
  11. authentication {
  12. auth_type PASS
  13. auth_pass
  14. }
  15. virtual_ipaddress {
  16. 1.1.1.1 //VIP地址配置
  17. }
  18. }

Master

  1. global_defs {
  2. router_id LVS_Savle_1 //主调度器的名称
  3. }
  4.  
  5. vrrp_instance VI_1 { //第一个实例的配置(VIP:1.1.1.1)
  6. state BACKUP //主调度器的热备状态
  7. interface eth0 //本网段提供服务的网卡设备名称
  8. virtual_router_id
  9. priority //主调度器的优先级
  10. advert_int
  11. authentication {
  12. auth_type PASS
  13. auth_pass
  14. }
  15. virtual_ipaddress {
  16. 1.1.1.1 //VIP地址配置
  17. }
  18. }

Savle

(2)Web服务器池配置

  1. virtual_server 1.1.1.1 {
  2. delay_loop
  3. lb_algo rr
  4. lb_kind DR //调整模式(DR)
  5. protocol TCP
  6. real_server 1.1.1.100 { //Web主机的地址
  7. weight
  8. TCP_CHECK {
  9. connect_port
  10. connect_timeout
  11. nb_get_retry
  12. delay_before_retry
  13. }
  14. }
  15. real_server 1.1.1.200 {
  16. weight
  17. TCP_CHECK {
  18. connect_port
  19. connect_timeout
  20. nb_get_retry
  21. delay_before_retry
  22. }
  23. }
  24. }

Master-Savel

  1. [root@Keepalived ~]# ip a
  2. : lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
  3. link/loopback ::::: brd :::::
  4. inet 127.0.0.1/ scope host lo
  5. inet6 ::/ scope host
  6. valid_lft forever preferred_lft forever
  7. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  8. link/ether :0c:::d4:5c brd ff:ff:ff:ff:ff:ff
  9. inet 1.1.1.10/ brd 1.255.255.255 scope global eth0
  10. inet 1.1.1.1/ scope global eth0
  11. inet6 fe80::20c:29ff:fe85:d45c/ scope link
  12. valid_lft forever preferred_lft forever

3.配置Web节点服务器

1)设置VIP

  1. [root@Web ~]# cd /etc/sysconfig/network-scripts/
  2. [root@Web network-scripts]# cp ifcfg-lo ifcfg-lo:
  3. [root@Web network-scripts]# vim ifcfg-lo:
  4. 修改为:
  5. DEVICE=lo:
  6. IPADDR=1.1.1.1
  7. NETMASK=255.255.255.255
  8. ONBOOT=yes
  9. [root@Web network-scripts]# service network reload
  10. [root@Web ~]# route add -host 1.1.1.1 dev lo: //添加路由
  11. [root@Web ~]# echo "route add -host 1.1.1.1 dev lo:0" >> /etc/rc.local

2)调整/proc参数(使用单播访问,提高相应速度)

  1. [root@Web ]# vim /etc/sysctl.conf
  2. 添加:
  3. net.ipv4.conf.all.arp_ignore =
  4. net.ipv4.conf.all.arp_announce =
  5. net.ipv4.conf.default.arp_ignore =
  6. net.ipv4.conf.default.arp_announce =
  7. net.ipv4.conf.lo.arp_ignore =
  8. net.ipv4.conf.lo.arp_announce =
  9. [root@localhost ]# sysctl -p

3)配置Web节点服务器(各Web服务器配置相同)

安装httpd服务,创建测试页面,并启动httpd服务

  1. [root@Web1 ~]#echo "LVS test 1" > /var/www/html/index.html //第一个web服务器内容
  2. [root@Web2 ~]#echo "LVS test 2" > /var/www/html/index.html //第二个web服务器内容

Keepalived+LVS高可用负载均衡集群的更多相关文章

  1. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  2. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  3. haproxy + keepalived 实现高可用负载均衡集群

    1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf  jdk-7u65-lin ...

  4. 基于Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  5. Nginx+Keepalived搭建高可用负载均衡集群

    本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...

  6. Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  7. LVS+Keepalived搭建MyCAT高可用负载均衡集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  8. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  9. Keepalived+LVS(dr)高可用负载均衡集群的实现

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...

随机推荐

  1. Python股票分析系列——自动获取标普500股票列表.p5

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第5部分.在本教程和接下来的几节中,我们将着手研究如何为更多公司提供大量的定价信息,以及如何一次 ...

  2. 实现可调整宽高的DIV(左右拖动和上下拖动)

    前言 本例是在React中实现,不过改一改通过原生js也很好实现,另外兼容性也做到了IE9.(IE8讲道理也是可以的). 首先看一下需要实现的需求: 要拖动图中的白色横条调整绿色和蓝色区域的高度,要拖 ...

  3. Php7 开发笔记

    Ubuntu环境安装 http://www.jianshu.com/p/1d312d9f1be1 sudo apt-get install python-software-properties sof ...

  4. iOS --- Touch ID指纹解锁

    https://www.cnblogs.com/ljmaque/p/TouchID.html 最近在项目中刚好用到了TouchId指纹解锁功能,之前也没有接触过,立马百度看看究竟是要如何使用,发现其实 ...

  5. 常用ASCII码对照表

        

  6. no-sql数据库之redis

    一.FAQ 1.如果用连接器连接redis不成功,报如下错误: crash-report-server replied:Request Entity Too Large 则可以先通过cmd命令查看端口 ...

  7. ssh无密码登录多台机器,并让所有远程机执行相同命令

    问题集锦 其实标题的内容就是很常见的集群操作,当有一个脚本或者一个命令需要很多个机器同时(或者说接近同时)执行时,就涉及到几个问题: 怎么通知每个主机? 每个主机收到通知后,怎么让主机执行命令? 怎么 ...

  8. 【kindle笔记】之 《明朝那些事儿》-2018-7-1

    [kindle笔记]读书记录-总 最近在读这本书.之前在微信读书里断断续续读过,读到深处还想蹦起来做笔记那种.后来种种原因断了,再没续上. 现在又开始啦.最近还在重八兄造反阶段,还很早呢,有时候晚上玩 ...

  9. js刷新界面前事件onbeforeunload

    这个方法的作用是防止填写信息时不小心按了刷新(F5,刷新界面,返回). 目前能实现这个需求的只有这个方法. 具体代码如下: 1.首先在body添加 onbeforeunload 这个事件 <bo ...

  10. 字符串和ASCII之间的转换

    public class CharToAscii { public static void main(String[] args) { CharToAscii.AscToString(); CharT ...