Keepalived+Haproxy负载均衡Codis之安装步骤流水帐

本文记录了使用Keepalived+Haproxy在开发环境中搭建Codis集群的详细步骤,包括Codis环境部署、安装软件、配置Keepalived和Haproxy、关闭SeLinux,以及解决权限问题。最终实现通过VIP地址进行负载均衡。
摘要由CSDN通过智能技术生成

Keepalived+Haproxy负载均衡Codis之安装步骤流水帐

后续POC可能会用到Reids,因此在开发环境部署了套Codis集群,来模拟某蚁云上的Redis集群环境,以备后需(也可能不需)。集群中有多个Codis-Proxy负责客户端接入,为了在这些个Codis-Proxy间均衡负载,并对外提供唯一的VIP地址(Virtual IP address),打算采用Keepalived+Haproxy的方式实现。在此处记录下流水帐式安装步骤以备忘。

Codis环境部署情况

整体环境情况

这里写图片描述

在开发环境中建立了七只虚拟机来部署整个环境,包括:

  • DNS与Ansible控制机共用机一只

    DNS为开发环境内各个应用对应的虚拟机提供域名解析,在各个应用环境配置中尽量使用域名来代替直接使用IP地址,以减少环境分拆/合并时IP地址发生变化带来的影响。DNS服务器对于本环境之外无法解析的域名直接forward到外网DNS。

    Ansible是一个部署管理多个主机(虚拟机)的工具,主要用来同时在多个机器上安装软件包、复制配置文件、执行命令等操作,省得换个机器去登录、重复执行相同的命令步骤。

  • Zookeeper集群三只

    现在主要用于Codis保存集群配置,另外就是Codis-Proxy实例启动时注册代理服务信息,以便类似于Jodis的客户端从中发现代理服务、实现客户端负载均衡,Jodis是对Jedis的封装。

  • Codis集群三只

    开发环境不讲究性能,也就省省资源的占用,所以整个集群(三个Redis Group)就挤挤吧。

    Codis集群的初始部署,也是用Codis源码中提供的Ansible PlayBook完成的,后面又手工在每只虚拟机上增加了三个Redis-Server(图中的Redis-2379),与已经部署好的三个Redis-Sever(图中的Redis-1379),在三个虚拟机之间交叉组成主从复制组。图中相同颜色填充的即为同一主从复制组。

这些虚拟机均采用CentOS 7.3操作系统,各只机的域名

Codis Dashboard

Codis集群部署完毕后,Codis Dashboard集群信息展现如下图:

这里写图片描述

安装软件包

来吧,先把需要的软件包安装上,在ansible主控机上执行:

$ ansible -bK cache-[1-3].arch -m package -a "name=keepalived state=present"
$ ansible -bK cache-[1-3].arch -m package -a "name=ipvsadm state=present"
$ ansible -bK cache-[1-3].arch -m package -a "name=haproxy state=present"

命令中的-bK是讲在受控机上要become成root并要求输入sudo口令,在我们的环境中,在虚拟机模板中建立了具有sudo执行所有命令权限的work用户,ansible主控机上的work用户设置成可无密SSH登录这些虚拟机的work用户,ansible利用SSH向虚拟机们发布命令。 cache-[1-3].arch是匹配三只Codis虚拟机的域名:cache-1.arch、cache-2.arch、cache-3.arch。

上面的命令最终会在目标机上,以yum安装keepalived、ipvsadm及haproxy,相应的版本为:

  • keepalived-1.3.5-1.el7.x86_64
  • haproxy-1.5.18-6.el7.x86_64
  • ipvsadm-1.27-7.el7.x86_64

关闭SeLinux

以前部署环境时,总是要闭掉SeLinux功能,这回建立虚拟机模板时给忘记掉,后面安装配置软件时也给忘掉,以至于运行时会报一些奇奇怪怪的错误,比如:tcp connect “permission denied”、Can not bind (0.0.0.0:6379)、脚本执行systemctl “permission denied”等等。被折腾了一番后,突然想起是不是SeLinux没关、这些错误都是SeLinux权限控制引起的? 关闭了SeLinux后,问题没再出现:

$ ansible -bK cache-[1-3].arch -m selinux -a "state=disabled"
$ ansible -bK cache-[1-3].arch -m shell -a "setenforce 0"

编辑配置文件

在ansible主控机某个地方,按照下面的目录结构及配置文件内容,编辑建立keepalived与haproxy的配置。

配置文件目录结构

.
└── files
    ├── haproxy
    │   └── haproxy.cfg                  # haproxy 配置文件
    └── keepalived
        ├── keepalived.conf              # keepalived 配置文件
        └── noti
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值