使用 keepalived 设置虚拟 IP 环境

Posted GE12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 keepalived 设置虚拟 IP 环境相关的知识,希望对你有一定的参考价值。

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

先了贴了一段介绍工作原理下面记录安装步骤

先查看下linux版本

#cat /etc/issue
CentOS release 6.6 (Final)

准备了两台机器 102,103

 

安装 nginx 两台机器同时安装
1、安装编译 Nginx 所需的依赖包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel
openssl openssl-devel

2 下载nginx http://nginx.org/en/download.html

 

已经下载了 nginx-1.6.2.tar.gz 上传到 linux  由于机器干净没有rz命令先装一下

yum install -y lrzsz

3 编译安装 分别两台机器同时执行

  # cd /usr/local/src/

  # tar -zxvf nginx-1.6.2.tar.gz

  # cd nginx-1.6.2

  # ./configure --prefix=/usr/local/nginx

  # make && make install

4 由于指定了configure 路径到 /usr/local/nginx

分别修改102和103

# vi /usr/local/nginx/conf/nginx.conf

#user  nobody; 修改为  user root;

  listen       80;  改为  listen       81;

 

分别修改102,103两个机器的 nginx 的欢迎页面

# vi /usr/local/nginx/html/index.html 

启动两个nginx

# /usr/local/nginx/sbin/nginx -t    先测试下配置文件修改是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

5、启动 Nginx
# /usr/local/nginx/sbin/nginx    

 

 

  平时维护重启命令加 -s reload  如下

# /usr/local/nginx/sbin/nginx -s reload

 Nginx 开机启动修改文件

# vi /etc/rc.local

加入 /usr/local/nginx/sbin/nginx

Keepalived 安装 nginx安装相对简单测试正常启动下面进行 

1 http://www.keepalived.org/download.html 下载 然后上传

2 #cd /usr/local/src

   # tar -zxvf keepalived-1.2.18.tar.gz 

  # cd keepalived-1.2.18

  # ./configure --prefix=/usr/local/keepalived

 

提示 

configure: error:
!!! OpenSSL is not properly installed on your system. !!!

解决办法

# yum -y install openssl-devel

再次执行configure

# ./configure --prefix=/usr/local/keepalived

 

# make && make install

 

 

3 因为没有使用 keepalived 的默认路径安装(默认是/usr/local)需要做一些工作

复制默认配置文件到默认路径

# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制 keepalived 服务脚本到默认的地址
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置 keepalived 服务开机启动
# chkconfig keepalived on

 4.、修改 Keepalived 配置文件 我们约定102机器为MASTER 节点配置文件(192.168.2.102)

   # vi /etc/keepalived/keepalived.conf

 修改配置文件要先 执行下ifconfig  看下网卡是 eth1

 

 修改备103机器

#ifconfig

 

修改配置文件

 

 5

编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)
脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程,keepalied
将虚拟 ip 绑定到 BACKUP 机器上。内容如下:
# vi /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

 

 6 分别启动102 和103

#  service keepalived start

测试1  

使用虚拟ip 访问 http://192.168.2.101:81/  测试访问到了102 主nginx

2测试常识关闭102机器上的keepalived 再次刷新 http://192.168.2.101:81 看看是否能做切换到103机器nginx上去

#  service keepalived stop

3 再次启动102上的keepalived 

常识关闭102上的nginx模拟102主节点nginx 故障无法启动看看是否能正常飘逸vip到103

这里我把102上的nginx配置文件相当于删除了然后强杀102 nginx

  # mv  /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx-conf

  # killall -9 nginx

 再次刷新 http://192.168.2.101:81 

 

 事实证明可以切换漂移

Keepalived 服务管理命令:
停止:service keepalived stop
启动:service keepalived start
重启:service keepalived restart
查看状态:service keepalived status

VIP总会在keepalived服务器中的某一台上,也只会在其中的某一台上;VIP绑定的服务器上的nginx就是master,当VIP所在的服务器宕机了,keepalived会将VIP转移到backup上,并将backup提升为master。

VIP也称浮动ip,是公网ip,与域名进行映射,对外提供服务; 其他ip一般而言都是内网ip, 外部是直接

以上是关于使用 keepalived 设置虚拟 IP 环境的主要内容,如果未能解决你的问题,请参考以下文章

keepalived生成的虚拟ip怎么ping不同呢?需要做啥特别设置吗

Centos7+nginx+keepalived高可用及双主模式

keepalived部署及实验

keepalived实现nginx高可用

linux keepalived怎么启动

keepalived集群高可用