mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群

这篇文章,我讲介绍如何为MariaDB Galera 集群添加负载均衡,大致步骤如下:确认所有Galera节点作为一个单一集群运行(所有节点都是主节点而且相互同步)

安装Haproxy(你可以安装到独立的服务器或者应用服务器)

配置集群监控检测脚本,用于检测每个backend server服务器健康

配置Haproxy统计页面

将应用程序指向Haproxy

大致架构图如下:

配置集群检测脚本**本节中所描述的步骤应该是所有数据库节点上执行,除非另有指定。1、首先,我们需要配置后端健康检查报告。 我们将使用现有的Percona的clustercheck。 拿到脚本,并把它放在/usr/local/bin目录运行以下命令:

$ git clone https://github.com/olafz/percona-clustercheck

$ cp percona-clustercheck/clustercheck /usr/local/bin

2、 clustercheck脚本执行通过监控MySQL的几个变量/状态 Galera节点上定期检查。 它会产生一个相应的HTTP返回代码一个简单的HTML输出(无论是503 - 服务不可用或200 - OK)。 为了让事情更容易为HAProxy的触发脚本,并获得后端的最新状态,我们必须让它侦听的端口。 我们可以使用xinetd打开脚本到一个服务进程,并使其听一个自定义的端口,在这种情况下,我将使用9200。创建一个名为/etc/xinet.d/mysqlchk的新文件,并添加以下几行:

# default: on# description: mysqlchkservice mysqlchk

{  disable = no

flags = REUSE

socket_type = stream

port = 9200  wait = no

user = nobody

server = /usr/local/bin/clustercheck  log_on_failure += USERID

only_from = 0.0.0.0/0

per_source = UNLIMITED

}

3、添加Mysqlchk服务到xinetd

echo 'mysqlchk      9200/tcp    # MySQL check' >>/etc/services

4、默认情况下,该脚本将使用MySQL用户名为“clustercheckuser”,密码为“clustercheckpassword!”。 我们需要确保这个MySQL用户与对应的密码存在的脚本将能够执行健康检查之前。 运行下面的DB节点之一(Galera应该复制该语句到其他节点)DDL语句:

mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

mysql> FLUSH PRIVILEGES;

你可以改变clustercheck script的32,33行,这篇文章我们使用默认用户名和密码。5、验证脚本返回一个正确的值

$ /usr/local/bin/clustercheck > /dev/null$ echo $?0

如果DB节点在已同步,你应该得到0,否则1应该是输出。 后端健康检查配置。安装Haproxy1、最简单的安装方法就是使用(yum/apt)包管理器,然而,强烈建议使用上HAProxy的网站提供的最新版本。无论哪种方式,我下面都会介绍到。A)如果您选择通过软件包管理器安装HAProxy的:

$ yum install haproxy # Redhat/CentOS$ sudo apt-get install haproxy # Debian/Ubuntu

B)通过Haproxy官网下载源码

$ yum install php-curl gcc make # Redhat/CentOS$ apt-get install php5-curl gcc make # Debian/Ubuntu$ wget http://www.haproxy.org/download/1.5/src/$ tar xvzfz

$ cd

$ make TARGET=linux26

$ cp -f haproxy /usr/sbin/haproxy

从源代码(选项B)安装带有没有初始化脚本。所以你需要手动的通过命令行启动。配置HAproxy现在,我们已经安装了HAProxy的。 我们需要将其配置为在端口3307监听MySQL服务,并执行后端健康检查。

在/etc/haproxy/haproxy.cfg,确保以下行存在:

global

pidfile /var/run/haproxy.pid

daemon

user haproxy

group haproxy

stats socket /var/run/haproxy.socket user haproxy group haproxy mode 600 level admin

maxconn 8192

spread-checks 3

quiet

defaults

mode    tcp

option  dontlognull

option tcp-smart-accept

option tcp-smart-connect

retries 3

option redispatch

maxconn 8192

timeout check   3500ms        timeout queue   3500ms        timeout connect 3500ms        timeout client  10800s        timeout server  10800s

userlist STATSUSERS        group admin users admin

user admin insecure-password admin

user stats insecure-password yourpassword

listen admin_page 0.0.0.0:9600

mode http

stats enable

stats refresh 60s

stats uri /

acl AuthOkay_ReadOnly http_auth(STATSUSERS)

acl AuthOkay_Admin http_auth_group(STATSUSERS) admin

stats http-request auth realm admin_page unless AuthOkay_ReadOnly

listen  mysql_3307

bind *:3307

mode tcp        timeout client  10800s        timeout server  10800s

balance leastconn        option httpchk        option allbackups        default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100

server db1 10.0.0.187:3306 check

server db2 10.0.0.188:3306 check

server db3 10.0.0.189:3306 check

现在开机启用该服务,让其工作。RHEL/CentOS 6:

$ chkconfig haproxy on # RHEL6$ service haproxy start # RHEL6

Ubuntu 14.04 and lower, Debian 7 and lower:

$ update-rc.d haproxy defaults$ sudo service haproxy start

RHEL/CentOS 7, Debian 8, Ubuntu 15.04:

$ systemctl enable haproxy

$ systemctl start haproxy

验证Haproxy端口监听是否正常:

sudo netstat -tulpn | grep haproxy

tcp        0      0 0.0.0.0:9600            0.0.0.0:*               LISTEN      370/haproxy

tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      370/haproxy

3307是MySQL的负载平衡端口,而9600是HAProxy的统计页面。 您可以登录访问http检查状态:// haproxy_ip_address:9600 /,以用户名“管理员”和密码登录“你的密码”作为配置的内部haproxy.cfg。 你应该看到类似下面的内容:

现在你可以把你的应用程序或者Mysql的客户端执行harproxy代理的3307端口,用于Mysql的负载均衡和故障自动转移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nvme固态硬盘开机慢_为何我使用了固态硬盘开机速度还是需要20-30秒

1、加速网上邻居在Windows XP中访问网上邻居是相当恼人的,系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,然后才显示出来,显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上&…

高性能mysql看不懂_高性能mysql笔记1

转载请注明&#xff1a;TheViper http://www.cnblogs.com/TheViper<>这本书写的真的很好&#xff0c;只可惜本屌不才&#xff0c;大部分都看不懂&#xff0c;暂且记下与mysql优化有关&#xff0c;对自己有用的东西。测试指标吞吐量吞吐量指的是单位时间内的事务处理数&am…

python 热词分析_Python笔记:热词分析2020-01-01

热词分析在公众趋势分析、舆情分析有很宽广的应用&#xff0c;我们来看看怎么从一个TXT文件中分析出文章的热词出来&#xff0c;我们采用流行的第三方“结巴”包来实现。首先安装第三方包(matplotlib&#xff0c;jieba&#xff0c;wordcloud&#xff0c;numpy)mmatplotlib主要来…

子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法

来源 | https://github.com/CommanderXL/biu-blog/issues/25exec其中exec可用于在指定的shell当中执行命令。不同参数间使用空格隔开&#xff0c;可用于复杂的命令。const { exec } require(child_process)exec(cat *.js bad_file | wc -l)exec方法用于异步创建一个新的子进程…

python元编程运用_Python 中的元编程

就像元数据是有关数据的数据一样&#xff0c;元编程就是编写用于操纵程序的某些程序。人们普遍认为&#xff0c;元程序就是生成其他程序的某些程序&#xff0c;但范式更加广泛。所有旨在自我读取、分析、转换或修改的程序都是元编程的范例。例如&#xff1a;领域特定语言 (DSL)…

wamp怎么安装mysql服务器_用wamp的mysq安装pythonmysql

(我不确定这是应该在这里问还是在苏。。但是看到this question就这样&#xff0c;我在这里要求它…)我在我的vista机器上安装了wamp(mysql-5.1.33)服务器&#xff0c;我正试图安装pythonmysql 1.2.3c1&#xff0c;以使用wamp提供的mysql版本。在起初&#xff0c;当我运行python…

mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据

展开全部 1、创建测试表; create table test_col_1(id number, var varchar2(200)); create table test_col_2(id number, var varchar2(200)); 2、插入测试数据, insert into test_col_1 select level*8, var||32313133353236313431303231363533e59b9ee7ad9431333431373839l…

MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...

Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化项目介绍基于SpringBootMybatis搭建的秒杀系统&#xff0c;并且针对高并发场景进行了优化&#xff0c;保证线程安全的同时极大地提高了服务器的吞吐量&#xff0c;主要优化手段有页面静态化、Redis缓存(页…

叶金荣mysql教程_mysql优化--叶金荣老师讲座笔记

copy to tmp table执行ALTER TABLE修改表结构时建议&#xff1a;凌晨执行Copying to tmp table拷贝数据到内存中的临时表&#xff0c;常见于GROUP BY操作时建议&#xff1a;创建索引Copying to tmp table on disk临时结果集太大&#xff0c;内存中放不下&#xff0c;需要将内存…

mysql tpcc 测试结果分析_mysql 数据库TPCC测试

创建数据库tpcc&#xff0c;导入测试表格mysql -h 192.168.0.202 -P15002 -utest -ptest -e "drop database tpcc;"mysql -h 192.168.0.202 -P15002 -utest -ptest -e "create database tpcc;"mysql -h192.168.0.202 -P15002 -utest -ptest --databasetpcc…

mysql 变量生命周期_Go: 延长变量的生命周期

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20191002-Go-Keeping-a-Variable-Alive/00.png)本文基于 Go 1.13。在 Go 中&#xff0…

python qqbot实现qq聊天机器人_Python QQBot库的QQ聊天机器人

本文实例为大家分享了Python QQBot库的QQ聊天机器人的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1.安装pip install qqbot2.主动发出消息from qqbot import _bot as bot# 登录QQbot.Login([-q, 2816626661])buddy 获取指定名称/备注的好友group 获取群buddy bot…

tp5 mysql实现消息队列_TP5系列 | Queue消息队列

消费信息如下ThinkPHP5 Queue消息队列优点1、Queue内置了 Redis&#xff0c;Database&#xff0c;Topthink &#xff0c;Sync这四种驱动&#xff0c;本文使用Redis驱动2、Queue消息队列适用于大并发或者返回结果 时间有点长并需要批量操作的第三方接口&#xff0c;可用于短信发…

mysql表里插不进去数据_Oracle数据中表值插不进去问题(转)

相信我们在进行测试的时候&#xff0c;有的时候会遇上数据库表的值插不进去的情况&#xff0c;在执行&#xff33;&#xff31;&#xff2c;语句的时候&#xff0c;好像卡住一样&#xff0c;没有反应。但是当你把&#xff33;&#xff31;&#xff2c;语句&#xff43;&#xf…

java 类默认访问权限_Java类 成员 访问权限 默认

Java中的访问权限控制符有四个.作用域 当前类 同一package 子孙类 其他packagepublic √ √ √ √protected √ …

java创建临时文件夹_java创建临时文件

[java]代码库/*** 创建临时文件** param prefix* 临时文件名的前缀* param suffix* 临时文件名的后缀* param dirName* 临时文件所在的目录&#xff0c;如果输入null&#xff0c;则在用户的文档目录下创建临时文件* return 临时文件创建成功返回true&#xff0c;否则返回false*…

java quartz2.1_quartz 2.1学习(一)

quartz是一种开源任务调度框架&#xff0c;提供了强大的任务调度机制&#xff0c;Quartz允许开发人员灵活地定义触发器的调度时间表&#xff0c;并可对触发器和任务进行关联映射。废话不多说了&#xff0c;介绍一下编程的基本步骤&#xff1a;实现Job接口&#xff0c;编码实现需…

java http setheader_response.setHeader各种用法详解

本文主要介绍了response.setHeader各种用法。具有很好的参考价值&#xff0c;下面跟着小编一起来看下吧一秒刷新页面一次 response.setHeader("refresh","1");二秒跳到其他页面 response.setHeader("refresh","2;URLotherPagename");没…

datagridview取消默认选中_C# WinForm 取消DataGridView的默认选中Cell 使其不反蓝

dataGridView1.Rows[0].Selected false;默认情况下 DataGridView绑定数据后会选中首行首列为实现其没有默认不选中(即绑定后 看不到首行首列反蓝)之前将dataGridView1.Rows[0].Selected false;放在窗体的构造函数中 怎么都看似不起效果 首行首列还是反蓝后来尝试放在窗体的Lo…

java多线程的优点_【java多线程的优点】

作者&#xff1a;Jakob Jenkov 翻译&#xff1a;古圣昌 校对&#xff1a;欧振聪尽管面临很多挑战&#xff0c;在java学习中多线程有一些优点使得它一直被使用。这些优点是&#xff1a;资源利用率更好程序设计在某些情况下更简单程序响应更快资源利用率更好想…