• Docker 下的 Keepalived + Haproxy 高可用实现 1 实现结果演示


    Docker 下的 Keepalived + Haproxy 高可用实现 1 实现结果演示

    一. 结果:

    1.1 对外虚拟IP “172.16.232.200”,可以访问5659,5660,5661 三个端口,分别对应不同功能模块;

    1.2 跳过中间过程,实际是访问的 Haproxy的5659监控界面,再加上负载均衡到“172.18.12.11~12~13”三套Rabbitmq容器的5672(功能端口)和15672(管理界面);

    二.高可用演示

    通过PIng测试,在宿主机ping Docker内虚拟IP 172.18.12.110,在手工关闭一台Keepalived主机时,IP转移,耗费2.3ms秒左右;

    结果表示高可用成功;

     三. 坐好,开始描述实现过程;

    3.1 详细结果

    从外部方位宿主机,本次合计实现了 2个IP,15各端口;

    3.2 两个IP

    172.16.232.138 是宿主网卡获取的ip(可以访问12个端口);

    172.16.232.200是虚拟IP(Keepalived)(多了3个端口,合计可以访问15个端口);

    3.3 15个端口;

    • 先三个:

    5659,5660,5661是虚拟IP专用的3个端口,分别对应了Docker内Keepalived的3个端口(5659,5660,5661)

    这3个端口只要不冲突,可以是<65536的任意整数;此次演示项目保持了跟Docker内Keepa的3个端口一致;

    这3个端口是通过宿主机的Keepalived虚拟ip 172.16.232.200转发的,并没有给宿主机本身,所以这3个端口不能通过物理ip172.16.232.138来访问;

    • 再12个端口:这12个端口,全部是Docker内部的5套容器的端口,分别是:

    2套Haproxy容器,每套3个,计6个端口

    3套Rabbitmq容器,每套2个,计6个端口

    本次演示项目,以上12个端口,可以不用转发给宿主机,但是为了学习Docker,就全部转发了;

    根据Docker规则,以上必须转发到宿主12个不同的接口;

    示例如下:(学习过程中,Haproxy容器多次创建和删除,图上的是Haproxy4~5)

     3.4 5套容器

    • 先3个简单的,Rabbitmq 容器,不过多描述;
    • 在2个复杂的 Haproxy+Keepalived容器,要多描述

     有Haproxy容器,下载和安装就行;也是下载+安装;

     没有Keepalived容器,需要自己创建;

    3.5 Keeplived 容器的创建

    创建Keepalived容器与2中方法,本次测试项目,Keepalived和Haproxy是一体的,所以可以在Haproxy的基础上创建Keepalived容器;

    1是运行Haproxy后,在内部安装Keepalived,后再保存成镜像,便于创建第二个Haproxy;体积稍大;

    2是通过DockFile生成Keepalived+Haproxy的合体镜像;

    由于直连官方链接,这2个方法,都耗费了40多分钟;

    示例如下

    通过DockFile生成是209m

    运行Haproxy后再安装,是257m

            

    • 先运行Haproxy,再内部安装Keepalived,

    运行后,命令行,apt-get update,再apt-get install keepalived,再apt-get install nano;

    划重点:docker内部默认没有编辑工具,这里安装nano,体积小;也可以安装vim,要大不少;nano用于编辑keepalived的配置文件;  

    • 通过DockFile生成Keepalived+Haproxy的合体镜像;

    FROM haproxy:latest
    RUN apt-get update && apt-get install -y nano keepalived

     

    就这2行,第一行,表示基础镜像是 haproxy:lastest, 第二行,表示 运行 “apt-get update && apt-get install -y nano keepalived”命令;

    划重点:“&&”符号,在生成Docker时,如果以上命令分成

    apt-get update //一行

    apt-get install **//二行

    的话,会在增加Docker镜像的“层数”,具体描述看Docker专业知识,本次测试项目不详细描述;

    • bulid命令 sudo docker build -t "新镜像的名字:版本" . 

    划重点:最后有个“.” 点字符;要在Dockerfile文件所在的目录下执行命令;不错,文件名就是“Dockerfile”;


    篇幅所限,在继续编写实现过程; 

  • 相关阅读:
    Java常见问题汇总
    前端url参数中带有callback并产生错误
    shiro中ecache-core版本引起的异常
    深入SpringMVC注解
    导出表格数据到excel并下载(HSSFWorkbook版)
    layui数据表格及分页
    签名的生成
    程序的健壮性Robustness
    ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
    生成二维码功能
  • 原文地址:https://www.cnblogs.com/cangfriend/p/12191551.html
Copyright © 2020-2023  润新知