keepalived主要有两大功能,一个是LB,一个是VRRP+failover,其中LB功能和LVS的功能类似,都是通过在LB上配置RS,监控RS的状态,将从client来的请求发送给对应算法的RS处理。前期我们安装了LVS,体验了一下LVS的DR模式,现在,我们用一下keepalive的LB功能。

  环境介绍:

  两台主机:CentOS_client_101和CentOS_client_102,地址分别为192.168.245.101和102,上面分别运行了nginx,页面上分别打印的是自己的IP地址信息。然后通过直接地址访问,发现是可以访问的。

  

  

  下面,我们到100上面,去安装keepalived工具,然后通过配置100的keepalive,实现LB功能。实际上还是VS和RS的故事。

  keepadlive工具,是Linux内核中自带的,可以通过yum直接安装,也可以通过下载源码编译安装。这里我们选择下载源码安装,安装的过程没有特殊要求,直接一路下一步就行,唯一要注意,就是要创建一个系统内核软连接。

ln -s /usr/src/kernels/2.6.-.el6.x86_64/ /usr/src/linux

  在进行编译的时候,如果出现如下的提示信息,需要安装对应的软件包。

configure: error: libnfnetlink headers missing

  这就需要安装libnfnetlink-devel软件包。直接通过yum就可以安装。

  编译完成之后,会出现一个如下图所示的提示信息。

  然后直接make&&make install 就可以了。安装完成后,还是养成一个好的习惯,创建一个软连接,ln -s keepalived-2.0.5/ keepalived,然后在软连接目录中,开始进行操作。

  默认的配置文件,存放在安装目录下,keepalived/etc/keepalived/keepalived.conf,启动命令在sbin目录下,一般情况下只要配置这个配置文件就可以启动了。这个配置文件主要分成两个部分,一个是全局的配置信息,主要包含告警通知、snmp、smtp服务器信息等。第二部分就是VRRP或者是LB的信息了。

  一把选择先将该模板配置信息进行一个备份,然后再进行相应的修改。单独做LB貌似没成功,不知道原因是什么。原因是因为VIP没有被配置出来,LB上需要先配置出来一个VIP,然后才能进行ipvs的事情,所以还是得要有一个VRRP INSTANCE。可以先做一个VRRP INSTANCE,然后再做一个LVS组。这样就可以了。编译安装的版本太高,可能有不可预知的问题,需要还是用yum install来安装。

  只能想一个其他的办法,也就是这两台RS做一个VRRP组,虚拟出一IP来供用户访问。这种情况下,和LVS相比,不需要在主机上做ARP的抑制,因为VIP和RS在同一张网卡上,而且VIP只在一台主机上出现。

  在两台RS上分别配置conf文件,一台为主,一台为备,用来确定两个VRRP INSTANCE为同一个GROUP的表示为VRRP-ID字段,两台RS上面该字段一定要相同。

! 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 127.0.0.1
smtp_connect_timeout
router_id NGINX1 #用来标识该VRRP INSTANCE的名称,在同一个group中,该router_id不能相同
} vrrp_instance VI_1 {
state MASTER #指定master主机
interface eth0 #指定心跳组播端口,实际上也是VIP的绑定接口
virtual_router_id 200 #唯一标识多个router的多个VRRP INSTANCE为一组的字段
priority 150  #优先级,越大越优先,在vote阶段,值越大,越能成为master
advert_int 1  #master的通告间隔
authentication {  #心跳校验方式
auth_type PASS
auth_pass
}
virtual_ipaddress {  #VIP,可以配置多个VIP
192.168.245.200
}
}

  主节点的配置如上所示,备节点的配置和主节点的配置,唯一的区别,就是在router_id、state和priority。

  配置好了该配置文件后,可以通过sbin目录下的keepalived文件进行启动,启动的具体帮助,可以通过keepalived --help来查看。

/application/keepalived/sbin/keepalived -f /application/keepalived/etc/keepalived/keepalived.conf

  -f是指定配置文件所在地位置。整个keepalived的日志文件,是写入到/var/log/messages文件中,通过监控该日志文件,可以观察keepalived的启动过程。

Jul  :: CentOS_client_101 Keepalived[]: Starting Keepalived v2.0.5 (/,)
Jul :: CentOS_client_101 Keepalived[]: Running on Linux 2.6.-.el6.x86_64 # SMP Tue Mar :: UTC (built for Linux 2.6.)
Jul :: CentOS_client_101 Keepalived[]: Opening file '/application/keepalived/etc/keepalived/keepalived.conf'.
Jul :: CentOS_client_101 Keepalived[]: Starting VRRP child process, pid=
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering Kernel netlink reflector
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering Kernel netlink command channel
Jul :: CentOS_client_101 Keepalived_vrrp[]: Opening file '/application/keepalived/etc/keepalived/keepalived.conf'.
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering gratuitous ARP shared channel
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) Entering BACKUP STATE (init)
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) Entering MASTER STATE

  进入master状态的RS,会拥有VIP,通过ip addr可以查看到该VIP

[root@CentOS_client_101 ~]# ip addr
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :0c::bc:8a: brd ff:ff:ff:ff:ff:ff
inet 192.168.245.101/ brd 192.168.245.255 scope global eth0
inet 192.168.245.200/ scope global eth0
inet6 fe80::20c:29ff:febc:8a38/ scope link
valid_lft forever preferred_lft forever

  这个时候,我们将备机也启动,观察一下日志。备机是不会进入master状态,也就没有VIP。这个时候我们可以做一个ping测试,当主备进行切换的时候,ping测试的情况。

  

  主备能做切换。这个时候,再次启动master主机,日志信息如下:

Jul  :: CentOS_client_101 Keepalived[]: Starting Keepalived v2.0.5 (/,)
Jul :: CentOS_client_101 Keepalived[]: Running on Linux 2.6.-.el6.x86_64 # SMP Tue Mar :: UTC (built for Linux 2.6.)
Jul :: CentOS_client_101 Keepalived[]: Opening file '/application/keepalived/etc/keepalived/keepalived.conf'.
Jul :: CentOS_client_101 Keepalived[]: Starting VRRP child process, pid=
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering Kernel netlink reflector
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering Kernel netlink command channel
Jul :: CentOS_client_101 Keepalived_vrrp[]: Opening file '/application/keepalived/etc/keepalived/keepalived.conf'.
Jul :: CentOS_client_101 Keepalived_vrrp[]: Registering gratuitous ARP shared channel
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) Entering BACKUP STATE (init)
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) received lower priority () advert from 192.168.245.102 - discarding
Jul :: CentOS_client_101 Keepalived_vrrp[]: Kernel/system configuration issue causing multicast packets to be received but IP_MULTICAST_ALL unset
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) received lower priority () advert from 192.168.245.102 - discarding
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) received lower priority () advert from 192.168.245.102 - discarding
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) received lower priority () advert from 192.168.245.102 - discarding
Jul :: CentOS_client_101 Keepalived_vrrp[]: (VI_1) Entering MASTER STATE

  在这个模式中,由于默认开启了抢占模式,所以会直接进行抢占VIP。关闭抢占是在VRRP instance中添加 nopreempt即可。

keepalived初次安装体验的更多相关文章

  1. Keepalived的安装

    Keepalived的安装 官网下载:点击直达 yum install -y libnl yum install -y libnl-devel 下载 cd /usr/local/src/ wget h ...

  2. Microsoft SQL server2017初次安装与使用记录

    Microsoft SQL server2017初次安装与使用记录 学校数据库课程以Microsoft SQL server为例, 由于老师给的软件版本和我的window10不兼容,选择官网的最新版2 ...

  3. 全球排名第一的开源ERP Odoo v12 最新一键安装体验版正式发布

    引言 Odoo 12.0是目前全球Odoo社区最新推出的产品版本代号,该产品具有划时代的意义,增加了如互联网级的知识库网盘功能.工业互联网的IOT设备矩阵管控功能,全新的Python Sass前端引擎 ...

  4. CentOS初次安装基本配置

    在虚拟机中安装CentOS7碰到的问题以及解决方法 1.安装之后想通过CRT远程连接获,输入ifconfig查看系统ip报错误:ifconfig command not found,报此错误是由于初次 ...

  5. 解决初次安装PyCharm后 No Python interpreter selected的问题

    原文链接:https://liuzhichao.com/p/1543.html PyCharm 是由JetBrains打造的一款 Python IDE.具有智能代码编辑器,能理解 Python 的特性 ...

  6. 初次安装git配置用户名和邮箱

    初次安装git配置用户名和邮箱 初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git con ...

  7. saltstack之keepalived的安装配置

    使用saltstack编译安装keepalived: 创建相应的目录,并在目录下创建相应的sls配置文件 [root@node1 ~]# mkdir /srv/salt/prod/keepalived ...

  8. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  9. keepalived+nginx安装配置

    软件版本号: pcre8.36 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz keepalived1.2 ...

随机推荐

  1. Delphi窗体之间互相调用的简单问题

    问题是这样的,我的程序主窗口Form1上面有一个数据连接(ADOCONNECTION1)和ADOQUERY,然后还有一些数据感知组件用于浏览用的,我打算点击From1中的一个“修改数据”按钮,就弹出F ...

  2. 三、kubernetes环境搭建(实践)

    一.目前近况 docker 版本 K8S支持 18.06的 二.安装docker #1.配置仓库 sudo yum install -y yum-utils device-mapper-persist ...

  3. jqprint控件使用

    /*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license //@ sourceMappingURL ...

  4. Linux下4个查找命令which、whereis、locate、find的总结

    (1)which   [-a]    cmdname1 cmdname2 ...... 作用:locate a command,从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径 ...

  5. Atcoder Beginner Contest 118 C-Monsters Battle Royale(贪心)

    题目链接 题意就是要让给出的数字去互相取余,看看能得到最小的数事多少. 那么就可以从小到大排序,每一次都贪心地把最小的数作为攻击者,去攻击其他的数字(也就是大的取余小的),然后再一次排序,循环这个过程 ...

  6. .net core 2.0 Autofac

    参考自 https://github.com/VictorTzeng/Zxw.Framework.NetCore 安装Autofac,在`project.csproj`加入 <PackageRe ...

  7. opencv图像融合(给人脸添加一个眼镜)

    基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 import numpy as np import cv2 as cv ...

  8. 洛谷P4907【CYH-01】小奔的国庆练习赛 :$A$换$B$ $problem$(DFS,剪枝)

    洛谷题目传送门 顺便提一下题意有一个地方不太清楚,就是如果输出No还要输出最少需要添加多少张牌才能满足要求.蒟蒻考完以后发现四个点Too short on line 2... 比较需要技巧的搜索 既然 ...

  9. Before NOIP 2018

    目录 总结 刷题 2018 - 9 - 24 2018 - 9 - 25 2018 - 9 - 26 2018 - 9 - 27 2018 - 9 - 28 2018 - 9 - 29 2018 - ...

  10. 故障排错-ping dup!

    ping DUP! ping一个vc中虚拟机的地址发现如下,出现了DUP! . 解决方式如下: 1.根据mac地址找到虚拟机网卡的端口组 然后编辑绑定和故障切换,切换负责平衡