博客
关于我
Haproxy+pacemake+fence实现高mycat的可用
阅读量:519 次
发布时间:2019-03-07

本文共 5189 字,大约阅读时间需要 17 分钟。

Haproxy+pacemake+fence实现高mycat的可用

1 Haproxy的部署

1.1 安装xinetd(server7、server8)

Mycat服务主机(server7、server8)上需要增加Mycat服务的状态检测脚本,并开放相应的检测端口,以提供给Haproxy对Mycat的服务状态进行检测判断。可以使用xinetd来实现,通过xinetd,Haproxy可以用httpchk来检测Mycat的存活状态。(xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。xinetd为linux系统的基础服务)

(1) 安装软件:yum -y install xinetd

(2) 查看配置文件:vim /etc/xinetd.conf

在这里插入图片描述

  • 判断/etc/xinetd.d是否存在,不存在就创建

在这里插入图片描述

(3)配置自定义Mycat存活状态检测服务:

vim  /etc/xinetd.d/mycat_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)添加 /usr/local/bin/mycat_status服务脚本(监听mycat的状态),并赋予权限

vim  /usr/local/bin/mycat_status
#!/bin/bash#/usr/local/bin/mycat_status.sh # This script checks if a Mycat server is healthy running on localhost. # It will return: # "HTTP/1.x 200 OK\r" (if Mycat is running smoothly) # "HTTP/1.x 503 Internal Server Error\r" (else) #对应mycat的安装目录启动程序Mycat=`/usr/local/mycat/bin/mycat status | grep 'not running' | wc -l` if [ "$Mycat" = "0" ]; then #模拟返回http请求信息/bin/echo -e "HTTP/1.1 200 OK\r\n" else /bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n" fi
  • 赋予执行权限:
chmod +x /usr/local/bin/mycat_status

(5)启动服务:systemctl start xinetd.service

  • 查看服务的状态:
systemctl status xinetd.service

在这里插入图片描述

  • 验证监听服务是否开启成功:netstat -antup|grep 48700

在这里插入图片描述(6)测试配置结果

/usr/local/bin/mycat_status

在这里插入图片描述

1.2 部署Haproxy

(1)安装软件: yum install haproxy.x86_64 -y

(2)编辑配置文件:vim /etc/haproxy/haproxy.cfg

## global配置中的参数为进程级别的参数,通常与其运行的操作系统有关global    log 127.0.0.1    local0    info ## 定义全局的syslog服务器,最多可以定义2个    ### local0是日志设备,对应于/etc/rsyslog.conf中的配置,默认回收info的日志级别    #log 127.0.0.1    local1 info    chroot /usr/share/haproxy    ## 修改HAProxy的工作目录至指定的目录并在放弃权限之前执行                                ### chroot() 操作,可以提升 haproxy 的安全级别    group    haproxy    ## 同gid,不过这里为指定的用户组名    user    haproxy    ## 同uid,但这里使用的为用户名    daemon    ## 设置haproxy后台守护进程形式运行    nbproc    1    ## 指定启动的haproxy进程个数,                ### 只能用于守护进程模式的haproxy;默认为止启动1个进程,                ### 一般只在单进程仅能打开少数文件描述符的场中中才使用多进程模式    maxconn 4096    ## 设定每个haproxy进程所接受的最大并发连接数,                    ### 其等同于命令行选项"-n","ulimit-n"自动计算的结果正式参照从参数设定的    # pidfile    /var/run/haproxy.pid    ## 进程文件(默认路径 /var/run/haproxy.pid)## defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个"defaults"所重新设定defaults    log    global    ## 继承global中log的定义    mode    http    ## mode:所处理的模式 (tcp:四层 , http:七层 , health:状态检查,只会返回OK)     option    httplog    retries    3    option redispatch    ## serverId对应的服务器挂掉后,强制定向到其他健康的服务器    maxconn    2000    ## 前端的最大并发连接数(默认为2000)    timeout connect    5000ms    ## 连接超时(默认是毫秒,单位可以设置us,ms,s,m,h,d)    timeout client    50000ms    ## 客户端超时    timeout server    50000ms    ## 服务器超时## HAProxy的状态信息统计页面listen admin_stats     bind    :80  ## 绑定端口    stats    uri /admin-status    ## 统计页面URI    stats    auth admin:admin    ## 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可    mode    http    option    httplog    ## 启用日志记录HTTP请求## listen: 用于定义通过关联“前端”和“后端”一个完整的代理,通常只对TCP流量有用listen    mycat_servers    bind    :3307  ## 绑定端口 ---------------------------------------------------------------------这里一定要注意,在测试连接的时候,端口指定3307    mode    tcp    option    tcplog    ## 记录TCP请求日志    option    tcpka    ## 是否允许向server和client发送keepalive    option    httpchk OPTIONS * HTTP/1.1\r\nHost:\ www    ## 后端服务状态检测    balance    roundrobin    ## 定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询方式    server    mycat_01 172.25.12.7:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10      server    mycat_02 172.25.12.8:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10

(3)启动服务:systemctl start haproxy.service

[root@server5 ~]# ps -ef | grep haproxyroot      8667     1  0 22:57 ?        00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pidhaproxy   8668  8667  0 22:57 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Dshaproxy   8669  8668  0 22:57 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Dsroot      9059  4014  0 23:00 pts/0    00:00:00 grep --color=auto haproxy

(4)测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在server6上部署Haproxy

2 pcs集群的部署

(1)

(2)启动pcs集群后,添加VIP和haproxy的资源

pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.12.100 op monitor interval=30spcs resource create haproxy systemd:haproxy op monitor interval=60s

(3)此时VIP和haproxy资源不再同一个节点上,要解决此问题可以将VIP和haproxy资源绑定到一个组中

在这里插入图片描述

pcs resource group add  hagroup vip haprox

在这里插入图片描述(4)测试

  • 停止server5的网卡服务,此时服务迁移到server6上
[root@server5 ~]# ip link set down eth0

在这里插入图片描述重启server5即可恢复server5的

3 添加fence设备

(1)

  • 关闭防火墙
  • 关闭selinux

(2)安装软件(server5和server6端):yum install fence-virt.x86_64 -y

(3)在server1和server4中新建目录:mkdir /etc/cluster

scp fence_xvm.key root@172.25.12.5:/etc/clusterscp fence_xvm.key root@172.25.12.6:/etc/cluster

(4)在pacemaker中添加fence资源:

pcs stonith create vmfence fence_xvm pcmk_host_map="server5:demo5;server6:demo6" op monitor interval=60s

在这里插入图片描述

(5)启用STONITH组件的功能:pcs property set stonith-enabled=true

(6)验证群集配置信息:crm_verify -LV,不报错即可

(7)测试

[root@server5 ~]# ip link set down eth0
  • 集群资源转移到server6

在这里插入图片描述

  • server5会自动重启虚拟机

在这里插入图片描述在这里插入图片描述

4 测试

mysql -uroot -h172.25.12.100 -pwestos -P3307

在这里插入图片描述

转载地址:http://beknz.baihongyu.com/

你可能感兴趣的文章
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 参数 innodb_flush_log_at_trx_commit
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>