HaProxy+keepalived+mycat集群实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

wKioL1gXW7-ih8EUAAEeIjG9-ME298.png-wh_50 

集群部署图的理解:

1、  keepalive和haproxy必须装在同一台机器上,keepalived负责为该服务器抢占VIP。

2、  192.168.1.107上的keepalived会抢占VIP,抢占VIP有优先级,配置keepalived.conf中参数priority值越大优先越高,在同等情况下,keepalived服务器启动先得会先抢到VIP。

3、  Harpoxy负责将对VIP的请求分发到mycat上,起到负载均衡的作用,同时haproxy也能检测到mycat是否存活,haproxy只会将请求转发到存活的mycat上。

4、  如果一台服务器(keepalive+mycat)宕机,另外一台上的keepalived会立刻抢占vip并接管服务,如果一台mycat服务器宕机,haproxy转发时候不会转发到宕机的mycat上.

  • keepalived的安装配置:

两台机器进行keepalived安装,个别参数区别其他一致。

1、      安装:

#tar -zxvf  keepalived-1.2.19.tar.gz

# cd keepalived-1.2.19 &&./configure --prefix=/usr/local/keepalived &&make&& make install

不报错,表示ok,有些系统可能需要安装gcc这个依赖包

Yum –y install gcc

2、    配置

cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/

mkdir /etc/keepalived&& cd /etc/keepalived/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived

mkdir-p /usr/local/keepalived/var/log

vi/etc/keepalived/keepalived.conf ####Master

! Configuration File for keepalived

 

global_defs {

  notification_email {

    acassen@firewall.loc

    failover@firewall.loc

    sysadmin@firewall.loc

   }

  notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server192.168.200.1

  smtp_connect_timeout 30

   router_idLVS_DEVEL

}

 

vrrp_instance VI_1 {

    state MASTER  ##MASTER改成BACKUP

    interface eth1   #和本机网卡接口名一致

   virtual_router_id 51

    priority 100    ###权重 ,SLAVE点改小于100就好

    advert_int 1

    authentication{

        auth_typePASS

        auth_pass1111

    }

   virtual_ipaddress {

        192.168.1.219 dev eth1 scope global

    }

notify_master /etc/keepalived/scripts/haproxy_master.sh

notify_backup /etc/keepalived/scripts/haproxy_backup.sh

notify_fault /etc/keepalived/scripts/haproxy_fault.sh

notify_stop /etc/keepalived/scripts/haproxy_stop.sh

}

 

###到这里可以测试下VIP的漂移功能。

二、安装HAPROXY

1、安装HAPROXY

#useradd  haproxy

tar -zxvfhaproxy-1.4.20.tar.gz

cdhaproxy-1.4.20 && make TARGET=linux26 PREFIX=/usr/local/haproxyARCH=X86_64 && make install PREFIX=/usr/local/haproxy

chown –R  haproxy.haproxy /usr/local/haprox

cd /usr/local/haproxy

编辑配置文件haproxy.cfg,以提供,修改内容即可

2、haproxy记录日志,默认haproxy是不记录日志的,为了记录日志还需要配置syslog模块,在linux下是rsyslogd服务,

#yum –y installrsyslog先安装rsyslog

yum安装rsyslog 有这样问题:

wKioL1gXXAPi9kPFAABxhJs4tOA997.png-wh_50

一般安装好rsyslog会自动生成rsyslog.d这个目录,若无自己创建

 #cd /etc/rsyslog.d/ && touch haproxy.conf

#vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

 local0.* /var/log/haproxy.log ###这个必须和haproxy.cfg的配置文件一致。

#vim /etc/rsyslog.cnf

wKiom1gXXCSxPZC9AAB7MGU5SJk178.png-wh_50

3、重启服务

#service rsyslogrestart

现在你就可以看到日志(/var/log/haproxy.log)了

到此haproxy+keepalived 的结合完毕,只需要在haproxy.cfg添加服务即可。

  • 配置监听 mycat是否存活

192.168.1.112 192.168.1.113 上添加检测端口48700,为此需要用到xinetd,xinetdLINUX系统基础服务

1、若无xinetd服务,则安装

#yum –y installxinetd

2、检查/etc/xined.conf是否有:

wKioL1gXXEejs8mlAAAgos1XvQg213.png-wh_50若无,则添加。

3、添加/etc/xinetd.d/mycat_status,此目录安装后默认存在。

#vimmycat_status

service mycat_status

{

        flags          = REUSE

        socket_type    = stream

        port           = 48700

        wait           = no

        user           = root

        server         =/usr/local/bin/mycat_status

        log_on_failure += USERID

        disable        = no

}

4、把mycat_status添加到/etc/services服务中去

wKiom1gXXHPyhkgYAAA9nJACaRg738.png-wh_50

5、/usr/local/bin/mycat_status的脚本,并设置权限777

6、重启服务、验证mycat_status服务是否启动成功

#service xinetd restart

#netstat –antup |grep 48700

wKiom1gXXKPRycFuAAAX4GEe1M4675.png-wh_50

  • 配置haproxy的脚本脚本,在/etc/keepalived目录添加目录sripts,存放haproxy的脚本脚本。

1、check_haproxy.sh

vi/etc/keepalived/scripts/check_haproxy.sh

##脚本含义:如果没有haproxy进程存在,就启动haproxy,停止keepalived

#!/bin/bash

STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f/usr/local/haproxy/haproxy.cfg"

STOPKEEPALIVED="/etc/init.d/keepalived stop"

LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[check_haproxystatus]" >>$LOGFILE

A=`ps-C haproxy --no-header |wc-l`

echo "[check_haproxystatus]" >>$LOGFILE

date >>$LOGFILE

if [ $A-eq 0 ];then

echo $STARTHAPROXY>> $LOGFILE

$STARTHAPROXY >> $LOGFILE  2>&1

sleep5

fi

if [`ps -C haproxy --no-header |wc-l` -eq 0 ];then

exit 0

else

exit 1

fi

2haproxy_master.sh(masterslave一样)

3haproxy_backup.sh(masterslave一样)

4haproxy_fault.sh(masterslave一样)

5haproxy_stop.sh

/etc/keepalived.conf配置文件去掉#好,启动这些脚本

要给脚本的权限:777

wKioL1gXXOiRZa0BAAAerExqxPw625.png-wh_50

wKioL1gXXOmAhr3iAAA8yOS9ke8298.png-wh_50


5、重启keepalived 服务

#Service keepalived restart

测试~~~Ing~~~~


本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1867872


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
关系型数据库 MySQL 数据库
|
8月前
|
消息中间件 存储 负载均衡
AI 推理场景的痛点和解决方案
一个典型的推理场景面临的问题可以概括为限流、负载均衡、异步化、数据管理、索引增强 5 个场景。通过云数据库 Tair 丰富的数据结构可以支撑这些场景,解决相关问题,本文我们会针对每个场景逐一说明。
1235 148
AI 推理场景的痛点和解决方案
|
7月前
|
人工智能 安全 数据挖掘
普通人用DeepSeek的20个神仙操作,看完效率翻倍!
DeepSeek不仅是技术宅的玩具,更是普通人生活的瑞士军刀。从作业辅导到职场提升,从家庭管理到法律援助,再到副业创收与情感沟通,它为生活带来全方位升级。学会以下20个实用技巧,让你轻松驾驭AI,效率翻倍!无论是学习、工作还是日常琐事,DeepSeek都能成为你的贴心助手,让技术隐形,让生活发光。立即体验,开启属于你的效率革命!
275 7
IDEA创建项目失败提示 Failed to create directory 或 “项目初始化失败”
文章解释了IDEA创建项目失败提示“Failed to create directory”或“项目初始化失败”的原因通常是由于IDEA对目标文件夹没有操作权限,并建议更换一个有权限的文件夹来创建项目。
1487 2
IDEA创建项目失败提示 Failed to create directory 或 “项目初始化失败”
|
存储 NoSQL 前端开发
谷粒商城笔记+踩坑(18)——购物车
业务流程:在执行目标方法之前,检测cookie里的userKey,如果没有则新建用户传输对象,userKey设为随机uuid将用户传输对象封装进ThreadLocal。在执行目标方法之后,创建cookie并,设置作用域和过期时间,让浏览器保存购物车模块/*** @Description: 在执行目标方法之前,判断用户的登录状态.并封装传递给controller目标请求**///创建ThreadLocal对象,同一个线程共享数据/**** 目标方法执行之前*/
谷粒商城笔记+踩坑(18)——购物车
|
存储 XML 前端开发
GIGE 协议摘录 —— 引导寄存器(四)(上)
GIGE 协议摘录 —— 引导寄存器(四)
251 1
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
275 1
如何在Java中实现多线程的Socket服务器?
在Java中,多线程Socket服务器能同时处理多个客户端连接以提升并发性能。示例代码展示了如何创建此类服务器:监听指定端口,并为每个新连接启动一个`ClientHandler`线程进行通信处理。使用线程池管理这些线程,提高了效率。`ClientHandler`读取客户端消息并响应,支持简单的文本交互,如发送欢迎信息及处理退出命令。
350 2
|
监控 Java 测试技术
基于springboot实现的个人性格测试系统(分前后端)
基于springboot实现的个人性格测试系统(分前后端)
273 0
|
XML Java 数据库连接
Spring Data JPA入门简解与XML配置实现
Spring Data JPA入门简解与XML配置实现
485 0