天天看点

Centos7离线安装和配置Keepalived

近期,项目中用户对服务的高可用有需求,所以就接触到了Keepalived。刚听到这玩意,我还嗤之以鼻,我和同事说对外提供服务的物理机挂掉,你再怎么HA也没用啊,除非提供多个IP,或者通过前置路由来解决问题。

结果现实很打脸,Keepalived用到虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)完美的实现了HA。

工作原理先不写了,网上一搜很多,直接上离线安装的流程:

1、先下个源码:

链接:https://pan.baidu.com/s/1VyzPjd0HichRczgkGREUwg

提取码:7g70

2、编译安装zlib、openssl

源码包拷贝到/usr/local/src/目录下,
(1)先解压编译安装zlib

tar xvf zlib-1.2.8.tar.gz
cd /usr/local/src/zlib-1.2.8

构建静态库
.../zlib-1.2.8]# ./configure
.../zlib-1.2.8]# make test
.../zlib-1.2.8]# make install

构建共享库
.../zlib-1.2.8]# make clean
.../zlib-1.2.8]# ./configure --shared
.../zlib-1.2.8]# make test
.../zlib-1.2.8]# make install
.../zlib-1.2.8]# cp zutil.h /usr/local/include
.../zlib-1.2.8]# cp zutil.c /usr/local/include
完成

(2)再解压编译安装openssl

tar xvf openssl-1.1.0j.tar.gz
cd /usr/local/src/openssl-1.1.0j

编译安装
.../openssl-1.1.0j]# ./config shared zlib
.../openssl-1.1.0j]# make depend
.../openssl-1.1.0j]# make && make install
.../openssl-1.1.0j]# ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 
.../openssl-1.1.0j]# ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

           

3、依赖组件安装完成后,开始安装Keepalived

tar xvf keepalived-2.1.0.tar.gz
cd keepalived-2.1.0

[[email protected] keepalived-2.1.0]# ./configure --prefix=/usr/local/keepalived
[[email protected] keepalived-2.1.0]# make && make install

完成后会在以下路径生成:
/usr/local/etc/keepalived/keepalived.conf
/usr/local/etc/sysconfig/keepalived
/usr/local/sbin/keepalived
           

4、配置启动Keepalived

# keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived 
 
# 将keepalived主程序加入到环境变量(安装目录下)
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
 
# keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
cp /usr/local/src/keepalived-2.1.0/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived
 
# 将配置文件放到默认路径下
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

加为系统服务:chkconfig --add keepalived
开机启动:chkconfig keepalived on
启动、关闭、重启
systemctl start keepalived
systemctl stop keepalived
systemctl restart keepalived


配置启动keepalived
修改默认配置文件/etc/keepalived/keepalived.conf
           

A节点(需要注意的是,eth0  这个的网卡名称一定别弄错了,要弄成自己的。可以使用 ip a 命令查看)

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
    notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server localhost
   smtp_connect_timeout 30
   router_id NodeA
}

vrrp_instance VI_1 {
	state BACKUP   #指定A节点为主节点 备用节点上设置为BACKUP即可  
	interface em1   #绑定虚拟IP的网络接口  
	virtual_router_id 51   #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组  
	priority 100   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低  
	advert_int 1   #组播信息发送间隔,两个节点设置必须一样  
	authentication {   #设置验证信息,两个节点必须一致  
		auth_type PASS
		auth_pass 1111
	}
		virtual_ipaddress {   #指定虚拟IP, 两个节点设置必须一样  
		192.168.1.100
	}
}
           

B节点只需要修改三个地方:

router_id  NodeB

state   BACKUP

priority   99

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
	notification_email {
		[email protected]
	}
	notification_email_from [email protected]
	smtp_server localhost
	smtp_connect_timeout 30
	router_id NodeB
}

vrrp_instance VI_1 {  
	state BACKUP
	interface em1
	virtual_router_id 51
	priority 99
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.1.100
	}
}
           

配置完成后,在A节点和B节点启动Keepalived就可以,

systemctl start keepalived

然后,可以通过查看服务状态来确定是否启动成功:

systemctl status keepalived

A节点作为主节点启动后,会在上面命令行查看状态中显示已绑定的虚拟IP的地址(也可以通过ip a命令查看虚拟ip是否绑定到网卡来确定);

B节点作为备用节点启动后,会在上面命令行查看状态中显示BACKUP节点初始化成功。

此时就可以通过虚拟IP来实现HA了,此时如果A节点挂掉,虚拟IP地址192.168.1.100会自动绑定到B节点的网卡上,可以通过 ip a命令查看。

(有搞不明白的可以留言沟通,觉得有帮助的可否一个个小小的赞 ^_^)

继续阅读