前言

  最近工作 中 有用到keepalived,就想着 在 本地 搭建一套环境验证一下相关的功能。因为创建虚拟机比较麻烦,就借助  docker来搭建这样 一套 环境 ,顺带学习 巩固下docker的相关 命令;

1.准备工作

  本地 安装好docker环境,我本地 使用的win10,已经安装好了docker环境;

2.下载centos7.6基础镜像

docker  pull  centos:7.6.

我已经安装好了,所以执行结果 如下

3.在centos7.6中安装keepalived和nginx 以及其他软件

启动容器:

docker run -it  f1cb7c7d58b7 /bin/bash

使用 ip和 ifconfig命令需要安装 下面两个

yum install iproute

yum  install  net-tools

4.使用yum 安装 keepalived

yum install keepalived

一直确认 y即可,安装完成

Keepalived检测nginx的脚本

/etc/keepalived 中 新建 check_nginx.sh

脚本 如下 :注意grep nginx: 冒号 ,因为执行的 时候脚本 的名字中也有nginx,会导致计算出来 的 数量不对 ,所以要 用nginx:

#!/bin/bash

A=$(ps -ef  | grep nginx: | grep -v  grep |  wc  -l)

if [ $A -eq  ];then

  nginx

  echo  "restart nginx, sleep 2 s"

  sleep  

  num=$(ps -ef  | grep  nginx:  |  grep -v grep | wc  -l)

  if [ $num -eq    ];then

    ps -ef | grep keepalived  |  grep  -v grep  | awk '{print $2}'| xargs kill -

    echo  "start nginx failed,kill keepalived"

  fi

else

  echo  "nginx not  dead"

fi

查看 本机 IP

ip a

Keepalived配置

注释vrrp_strict  否则会导致 VIP 无法访问

增加检测脚本

添加VIP,注意 VIP 和本机IP在 同一个 网段内,否则也 无法访问

本机172.17.0.6/16 虚IP设置 为172.17.0.8/16

5.使用yum安装nginx

参考链接:https://www.cnblogs.com/opsprobe/p/10773582.html

yum install yum-utils

添加源

到 cd /etc/yum.repos.d/ 目录下

新建

vim nginx.repo

文件

输入以下信息

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=
enabled=
gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=
enabled=
gpgkey=https://nginx.org/keys/nginx_signing.key

yum install nginx

安装完成

启动查看是否成功

nginx
curl localhost:

6.退出 ,制作 镜像

docker ps  -a

找到 刚才 的容器

docker commit 5f781fbe483e keepavled_nginx:v1

7.启动主备keepalived容器

docker  run --privileged  -it --name keepalived_master  8dfe8c83bfae /usr/sbin/init

docker  run --privileged  -it --name keepalived_salve  8dfe8c83bfae /usr/sbin/init

8.进入容器

docker ps

找到 启动 的容器

分别 进入容器

主 :172.17.0.7

备:172.17.0.6

备 keepalived修改 配置

9.验证keepalived

启动主keepalived,发现虚IP 已经绑定

systemctl status keepalived

查看启动状态

备keepalived启动,虚IP没有绑定

Kill 掉主的keepalived进程 后,主不再绑定VIP

重新查看 备,发现 绑定了VIP

再启动主keepalived,会发现VIP重新绑定在 主keepalived服务器

10.验证 nginx

  Kill 掉nginx进程之后,再次查看 会发现nginx被重新 启动,因为 keepalived检测 脚本 会 自动检查 ,没有 进程 会自动重启,启动不成功则把keepalived kill掉。

  见脚本check_nginx.sh

  注意:check_nginx.sh必须要 加 权限 ,否则 不会执行;

  chmod  +x  check_nginx.sh

VIP访问nginx测试

先分别修改主备 nginx的页面并重启

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

主备分别启动keepalived,此时 VIP绑定在主服务器 ;

访问nginx: curl 172.17.0.8:80,此时访问的是主服务器

把主服务器 的keepalived kill掉 之后验证 ,此时VIP绑定在备服务器,访问 的备服务器 的nginx

11.遇到的几个 问题

VIP无法访问的问题:

  Vrrp_strict 注释掉

  VIP在一个网段

Check_nginx.sh脚本 问题:

   grep  nginx: 冒号要加上否则执行过程中会grep 到脚本名称导致判断进程数量一直不为0;

  脚本必须加权限,否则无法执行

参考链接:

https://www.cnblogs.com/jinjiangongzuoshi/p/9313438.html

docker 搭建keepalived+nginx高可用的更多相关文章

  1. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  2. Keepalived+Nginx高可用实例

    Keepalived+Nginx高可用实例 注意事项: 1.VIP不需要在服务器网络配置文件中配置. 2.nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现VI ...

  3. Keepalived+nginx高可用

    这种方法会把Keepalived进程结束掉,在教育机构学习到的方法,我个人对这种方法不认可. 参考: https://www.cnblogs.com/gshelldon/p/14504236.html ...

  4. keepalived+nginx高可用负载均衡环境搭建

    上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master)  192. ...

  5. LVS+KeepAlived+Nginx高可用实现方案

    文章目录概念LVSKeepAlived为什么要使用准备软件安装KeepAlived 安装源码安装yum安装服务启动.重启.关闭安装ipvsadmnginx安装防火墙(iptables)防火墙配置(方式 ...

  6. Keepalived+Nginx高可用集群

    Keepalived简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替 ...

  7. keepalived+nginx 高可用集群

    一.什么是高可用?   nginx做负载均衡,能达到分发请求的目的,但是不能很好的避免单点故障. 1.nginx集群单点问题 分发器宕机怎么处理? 假如nginx服务器挂掉了,那么所有的服务也会跟着瘫 ...

  8. keepalived+nginx高可用实现

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能 ...

  9. centos安装与配置keepalived+nginx高可用

    一.安装启动keepalived 1.下载keepalived 在centos系统中,用wget下载最新版本: mkdir tool cd tool wget https://www.keepaliv ...

随机推荐

  1. win10执行Tensorflow,总是会报错“DLL load failed: 找不到指定的模块”的解决方式----终极版方式

    win10上运行tensorflow时报错,“DLL load failed: 找不到指定的模块”的解决方式 我只想说,当你们遇到这个问题的时候,以下终极版的方式出来了,非常感谢知乎 leo lv ! ...

  2. 【Python challenge】通关代码及攻略(0-11)

    前言: 最近找到一个有关python的游戏闯关,这是游戏中的思考及通关攻略 最开始位于:http://www.pythonchallenge.com/pc/def/0.html 第0关 题目分析 提示 ...

  3. golang 学习之路 string转换为其他类型 其他类型转换为string

    将其他值转换为string 一般常用fmt.Sprintf(格式,转换的值) // 使用fmt.Sprintf 转换所有的类型为string 使用 这是第一种 // 注意在sprintf使用中需要注意 ...

  4. Django的路由系统01-路由分发

    1. Including other URLconfs 原urls.py文件,多个app的路由系统写在一起,不方便管理 范例: from django.conf.urls import url fro ...

  5. 3L-最好、最坏、平均、均摊时间复杂度

    关注公众号 MageByte,设置星标点「在看」是我们创造好文的动力.后台回复 "加群" 进入技术交流群获更多技术成长. 本文来自 MageByte-青叶编写 上次我们说过 时间复 ...

  6. go 创建slice的方式

    1.直接声明:var slice []int 2.new: slice := *new([]int) 3.字面量:slice := []int{1,2,3,4,5} 4.make: slice :=  ...

  7. 【python】提取sql语句中的表名

    前言 最近刚学python,写一个小工具时需要提取sql语句中表名,查询一番后找到一篇文章挺不错的,mark一下 PS.那篇文章是转载的,且没有标注转载自哪里 正文 import ply.lex as ...

  8. 为了弄懂Flutter的状态管理, 我用10种方法改造了counter app

    为了弄懂Flutter的状态管理, 我用10种方法改造了counter app 本文通过改造flutter的counter app, 展示不同的状态管理方法的用法. 可以直接去demo地址看代码: h ...

  9. [Alg] 文本匹配-单模匹配-KMP

    1. 暴力求解 如下图所示.蓝色的小三角表示和sequence比较时的开始字符,绿色小三角表示失败后模式串比对的开始字符,红色框表示当前比较的字符对. 当和模式串发生不匹配时,蓝色小三角后移一位,绿色 ...

  10. Git 的简单使用及ssh配置问题-赖大大

    软件安装 第一步当然是安装啦. 官方网址:https://git-scm.com/ 具体操作 在你本地电脑的文件夹里右击鼠标,选Git base here 显然,你是在本地仓库的master分支上,通 ...