CentOS7搭建Keepalived双机热备
2022/09/07
Linux
Keepalived
# 环境 主机 | IP | 系统 --- | --- | --- vm1 | 192.168.220.101 | CentOS7.6 vm2 | 192.168.220.102 | CentOS7.6 # 下载 打开 `Keepalived` 官网:[https://www.keepalived.org/download.html](https://www.keepalived.org/download.html) 点击最新版的版本号进行下载并上传到每一台服务器,或者右击版本号复制下载链接并直接在服务器上使用 `wget` 命令下载 注:不建议使用 `yum -y install keepalived` 一键安装,`yum` 方式安装的版本较低 下文以 `2.2.7` 为例 # 安装依赖 安装过程中需要使用如下依赖,执行命令安装 ```bash yum -y install gcc-c++ openssl-devel libnl3-devel libmnl-devel libnftnl-devel ``` # 编译安装 解压并进入改文件夹 ```bash tar -zxf keepalived-2.2.7.tar.gz cd keepalived-2.2.7/ ``` 配置,`prefix` 指定安装路径 ```bash ./configure --prefix=/usr/local/keepalived ``` 编译,安装 ```bash make make install ``` 删除源码文件 ```bash cd .. rm -rf keepalived-2.2.7* ``` # 设置服务 编辑配置文件 ```bash vim /usr/lib/systemd/system/keepalived.service ``` 只需要在 `ExecStart` 的最后添加 ` -f /usr/local/keepalived/keepalived.conf` 指定配置文件所在位置即可,最终文件内容如下 ```conf [Unit] Description=LVS and VRRP High Availability Monitor After=network-online.target syslog.target Wants=network-online.target Documentation=man:keepalived(8) Documentation=man:keepalived.conf(5) Documentation=man:genhash(1) Documentation=https://keepalived.org [Service] Type=forking PIDFile=/var/run/keepalived.pid KillMode=process EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS -f /usr/local/keepalived/keepalived.conf ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target ``` # 编写配置文件 每一台机器的文件都不相同! 新建 `keepalived.conf` 配置文件 ```bash vim /usr/local/keepalived/keepalived.conf ``` > 主机配置文件 ```conf # 全局定义配置块 global_defs { # 标识机器的字符串(不必是主机名,默认本地主机名) router_id lb101 } # 定义一个VRRP实例,test为实例名称,可任意填写 vrrp_instance test { # 状态:MASTER为主,BACKUP为从 state MASTER # 指定绑定的网卡,通过ifconfig查看网卡名称 interface ens33 # 用于区分多个实例,取值1 ~ 255 virtual_router_id 51 # 权重,用于选出MASTER,取值1 ~ 255 priority 100 # VRRP通告时间间隔(秒) advert_int 1 # 鉴权 authentication { # 鉴权类型,PASS指使用密码, auth_type PASS # 鉴权密码,最长支持8位 auth_pass 12345678 } # 虚拟IP,可配置多个 virtual_ipaddress { # 具体虚拟IP,和指定网卡在同一网段且未被使用 192.168.220.200 } } ``` > 从机配置文件 ``` # 全局定义配置块 global_defs { # 标识机器的字符串(不必是主机名,默认本地主机名) router_id lb102 } # 定义一个VRRP实例,test为实例名称,同主机 vrrp_instance test { # 状态:MASTER为主,BACKUP为从 state BACKUP # 指定绑定的网卡,通过ifconfig查看网卡名称 interface ens33 # 用于区分多个实例,取值1 ~ 255,同主机 virtual_router_id 51 # 权重,用于选出MASTER,取值1 ~ 255 priority 50 # VRRP通告时间间隔(秒) advert_int 1 # 鉴权 authentication { # 鉴权类型,PASS指使用密码, auth_type PASS # 鉴权密码,最长支持8位,同主机 auth_pass 12345678 } # 虚拟IP,可配置多个,同主机 virtual_ipaddress { # 具体虚拟IP,和指定网卡在同一网段且未被使用 192.168.220.200 } } ``` # 启动服务 ``` # 设置开机自启 systemctl enable keepalived.service # 启动服务 systemctl start keepalived.service # 查找状态 systemctl status keepalived.service ``` # 测试 1. 启动服务后,通过 `ip a` 查看 `IP`<br><br> 2. 关闭主机,查看从机的 `IP`<br> 3. 开启主机,`IP` 又恢复到主机上<br><br>
7