离线centOS7使用keepalived+docker+nginx构建高可用

离线centOS 7使用keepalived+docker+nginx构建高可用

环境条件:两台centos7的服务器;

IPnginx端口
192.168.6.13680
192.168.6.13880

一、下载

  1. 下载keepalived需要的环境包,为以下几种依赖:**
    gcc-c++
    pcre pcre-devel
    zlib zlib-devel
    openssl-devel
    popt-devel
    initscripts
    net-tools

    如果能连接外网直接使用yum,无法连接外网下载rpm包:http://www.rpmfind.net/linux/rpm2html/search.php,搜索需要的包下载
  2. 下载keepalived,下载地址:https://www.keepalived.org/download.html,我这里下载的是https://www.keepalived.org/software/keepalived-2.0.6.tar.gz 版本

二、安装keepalived

        tar -zxvf keepalived-2.0.6.tar.gz;  #解压
		cd keepalived-2.0.6;  #进入解压目录
		 ./configure --prefix=/usr/local/keepalived; #编译
		 make && make install; #安装          

安装成功后会有/usr/local/keepalived目录,如果安装过程报错,一般就是少包,看步骤一是否缺少包。

/usr/local/keepalived 目录下结构:

在这里插入图片描述

三、将keepalived 安装成系统服务

	mkdir /etc/keepalived  #创建目录
	cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/  #拷贝主要文件
	cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
	ln -s /usr/local/sbin/keepalived /usr/sbin/
	systemctl daemon-reload  #重新加载
	systemctl start keepalived.service #启动
	#如果有错误执行下面命令替换下
	cd /usr/sbin/ 
	rm -f keepalived  
	cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/ 

常用命令:

	systemctl daemon-reload  #重新加载
	systemctl start keepalived.service #启动
	systemctl stop keepalived.service #停止
	systemctl enable keepalived.service  #开机启动
	systemctl disable keepalived.service #取消开机启动
	systemctl status keepalived.service  #服务状态

四、配置keepalived

	cd /etc/keepalived  #进入配置目录下
	mv keepalived.conf  keepalived.conf.backup #备份原来配置
	vim keepalived.conf
	#配置文件如下

vrrp_script  chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER   #指定为master
    interface ens33 #网卡名
    virtual_router_id 121 #路由id需要一致
    mcast_src_ip 192.168.6.136 #广播本机ip
    priority 100       #权重
    nopreempt
    advert_int 1      #检测时间 1s
    authentication {   #认证
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_nginx
    }

    virtual_ipaddress {
       192.168.6.100     #虚拟ip,得是统一ip段的
    }
}

添加心跳检测脚本:

vim nginx_check.sh
#以下是脚本内容
#!/bin/bash

# 容器名称
containerName=nginx
currTime=`date +"%Y-%m-%d %H:%M:%S"`

# 查看进程是否存在
exist=`docker inspect --format '{{.State.Running}}' ${containerName}`

if [ "${exist}" != "true" ]; then
		#如果关闭了可以重启我们这里方便测试跳过
		# docker restart  ${containerName}
		# 记录
		echo "${currTime} 重启docker容器,容器名称:${containerName}" >> /mnt/xvde1/ms_ctynyd/scripts/wbwf_monitor.log
	
fi

五、docker中安装Nginx

服务器连接不了外网的话请参考:https://editor.csdn.net/md/?articleId=107047628

docker pull nginx #下载nginx镜像
docker run -d --name nginx nginx:latest #启动一个镜像
mkdir /usr/share/; #创建nginx页面目录
docker cp nginx:/etc/nginx /etc/ #拷贝出配置文件
docker cp nginx:/usr/share /usr/share #拷贝出基础页面
docker stop nginx;#停止容器
docker rm nginx;#删除容器
#映射端口和数据卷,确保宿主机的80端口没被占用
docker run -it -d  --name nginx --restart=always  -p 80:80 -v /etc/nginx/:/etc/nginx/ -v /usr/share/nginx:/usr/share/nginx --privileged  nginx

修改nginx的默认页面

vi /usr/share/nginx/html/index.html

将Welcome to nginx!修改成Welcome to nginx! Master

六、构建另一个服务器的环境

1,将上面的步骤环境在操作一遍

2,配置keepalived.conf如下:
需要修改的就是mcast_src_ip 、state 、priority 这三个参数

vrrp_script  chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP   #指定为BACKUP
    interface ens33 #网卡名
    virtual_router_id 121 #路由id需要一致
    mcast_src_ip 192.168.6.138 #广播本机ip
    priority 80       #权重
    nopreempt
    advert_int 1      #检测时间 1s
    authentication {   #认证
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_nginx
    }

    virtual_ipaddress {
       192.168.6.100     #虚拟ip,得是统一ip段的
    }
}

3,修改nginx的默认页面

vi /usr/share/nginx/html/index.html

将Welcome to nginx!修改成Welcome to nginx! Slave

systemctl restart keepalived.service #重启keepalived
systemctl status keepalived.service #检测一下日志

如果日志输出一下内容则没问题
在这里插入图片描述

七、测试

1.客户端测试:
打开dos窗口->输入:curl 192.168.6.100
在这里插入图片描述

2,现在我们把docker容器的nginx停了看一下

docker stop nginx

重开dos窗口:
在这里插入图片描述

3,docker重启nginx

docker restart nginx

在这里插入图片描述

大功告成,楼主在搭建的时候遇到了很多坑。需要耐心,如果错误了细心看了keepalived的日志解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值