2个是客户端与后端的连日,另一个是后端与数据库的连年

不可防止的是,使用MySQL时乘机岁月的滋长,用户量以及数据量的逐月增多,访问量更是激增,最后将会使MySQL达到某些瓶颈,那么MySQL的属性将会大大下落。如何是好?后面早已讲过十一篇优化方案,接下去本身将教师MySQL高可用负载均衡这一方式。其中落到实处高可用负载均衡的形式有无数,例如LVS+keepalived组合完毕、haproxy+keepalived组合完结等等,如今用mycat的更为多,这里大家利用HAProxy

  • MyCat组合完结MySQL高可用负载均衡这一技巧。

① 、为何须要mysql集群?

3个特大的分布式系统的性格瓶颈中,最脆弱的就是一而再。连接有三个,三个是客户端与后端的连续,另多个是后端与数据库的连天。不难如图下三个中灰框框(其实,那张图是本身在悟空问答解答旁人的时候用Windows的自带画板画的,勿喷啊..)

图片 1

版权归小编全体,哈哈

在客户端与后端中得以应用类似nginx的载荷均衡化解(本专题是mysql优化,前面出高并发专题再详尽讲解连接1的负荷均衡),而数据库层是最薄弱的一层,一般在动用设计时在上游就必要把请求拦截掉,数据库层只负责“能力限制内”的拜访请求,所以,我们透过在服务层引入队列和缓存,让最底部的数据库高枕无忧。

可是,假设请求激增,依旧有恢宏的查询压力到MySQL如何是好呢?

多才多艺的程序员还是要想方法消除MySQL的瓶颈。那时候,集群出现了。在后端与数据库中我们得以采纳类似mycat的负荷均衡完结mysql集群,进步mysql的共同体质量。(可用组合很多,如LVS+keepalived组合、haproxy+keepalived组合)

图片 2

① 、为何须求mysql集群?

壹 、基本软件 版本

操作系统:CentOS-6.6-x86_64

JDK版本:jdk1.7.0_72

HAProxy版本:haproxy-1.5.16.tar.gz

MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz

MySQL版本:mysql-5.6.26.tar.gz

2个巨大的分布式系统的习性瓶颈中,最薄弱的就是连连。连接有五个,一个是客户端与后端的接连,另2个是后端与数据库的连接。不难如图下五个黑灰框框(其实,那张图是本身在悟空问答解答外人的时候用Windows的自带画板画的,勿喷啊..)

贰 、安顿环境设计:

图片 3

版权归小编全体,哈哈

三 、集群布置架构图如下:

图片 4

图消痈达:

HAProxy负责将呼吁分发到MyCat上,起到负载均衡的职能,同时HAProxy也能检测到MyCat是还是不是存活,HAProxy只会将呼吁转发到存活的MyCat上。如若一台MyCat服务器宕机,HAPorxy转载呼吁时不会转接到宕机的MyCat上,所以MyCat依然可用。

在客户端与后端中得以使用类似nginx的负荷均衡化解(本专题是mysql优化,前边出高并发专题再详尽讲解连接1的载荷均衡),而数据库层是最薄弱的一层,一般在运用设计时在上游就必要把请求拦截掉,数据库层只担负“能力限制内”的拜访请求,所以,大家因此在服务层引入队列和缓存,让最头部的数据库高枕无忧。

五、MyCat节点2的部署

MyCat主机2(edu-mycat-02,192.168.1.204)(上一篇主从复制安顿,这么快就忘了的可以看看,文末有接二连三)

小心:edu-mycat-01(192.168.1.203)和 edu-mycat-02(192.168.1.204)
中都要添加(或更新)主机名映射配置。

# vi /etc/hosts

192.168.1.203 edu-mycat-01

192.168.1.204 edu-mycat-02

192.168.1.205 edu-mysql-01

192.168.1.206 edu-mysql-02

而是,如若请求激增,依然有大气的询问压力到MySQL如何是好呢?

⑥ 、配置MyCat状态检查服务(在MyCat节点主机上布置)

MyCat服务主机(edu-mycat-0壹 、edu-mycat-02)上急需充实mycat服务的状态检测脚本,并开放相应的检测端口,以提须要HAProxy对MyCat的服务境况举办检测判断。能够应用xinetd来兑现,通过xinetd,HAProxy可以用httpchk来检测MyCat的水土保持状态。(xinetd即extended
internet
daemon,xinetd是新一代的网络守护进程服务程序,又叫一级Internet服务器。日常用来管理各个轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的成效,然则越来越强大和平安。xinetd为linux系统的底蕴服务)

一 、若是xinetd还向来不设置,可采取如下命令安装:

# yum install xinetd

② 、检查/etc/xinetd.conf的尾声是还是不是有 includedir /etc/xinetd.d
,没有就增加

# vi /etc/xinetd.conf

图片 5

叁 、检查 /etc/xinetd.d 目录是或不是存在,不设有刚创设

# mkdir /etc/xinetd.d/

④ 、增添MyCat存活状态检测服务配置

# touch /etc/xinetd.d/mycat_status

# vi /etc/xinetd.d/mycat_status

日增以下内容:

service mycat_status

{

flags = REUSE

## 使用该标记的socket_type为stream,必要设置wait为no

socket_type = stream ## 封包处理模式,Stream为TCP数据包

port = 48700 ## 服务监听端口

wait = no ## 表示不需等候,即服务将以二十四线程的点子运转

user = root ## 执行此服务进度的用户

server =/usr/local/bin/mycat_status ## 须求运行的服务脚本

log_on_failure += USERID ## 登录失败记录的内容

disable = no ## 要开动服务,将此参数设置为no

}

5、添加 /usr/local/bin/mycat_status 服务脚本

# touch /usr/local/bin/mycat_status

# vi /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 ” (if mycat is running smoothly)

# “HTTP/1.x 503 Internal Server Error ” (else)

mycat=`/usr/local/mycat/bin/mycat status | grep ‘not running’ | wc -l`

if [ “$mycat” = “0” ]; then

/bin/echo -e “HTTP/1.1 200 OK “

else

/bin/echo -e “HTTP/1.1 503 Service Unavailable “

fi

⑥ 、给新增脚本赋予可举行权限

# chmod a+x /usr/local/bin/mycat_status

7、在 /etc/services 中加入 mycat_status 服务

# vi /etc/services

在最终出席:

mycat_status 48700/tcp # mycat_status

保存后,重启xinetd服务

# service xinetd restart

8、验证mycat_status服务是或不是中标运维

# netstat -antup|grep 48700

图片 6

能收看上图这样的音讯,表明服务配置成功。

九 、MyCat服务主机的防火墙上打开 48700端口

# vi /etc/sysconfig/iptables

增加:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 48700 -j ACCEPT

保留后重启防火墙

# service iptables restart

本子测试:

# /usr/local/bin/mycat_status

图片 7

真长!中场休息会,一起左三圈右三圈吧。看不下去的能够先收藏关切哈。

多才多艺的程序员如故要想艺术缓解MySQL的瓶颈。这时候,集群出现了。在后端与数据库中我们得以采纳类似mycat的载重均衡完结mysql集群,升高mysql的总体质量。(可用组合很多,如LVS+keepalived组合、haproxy+keepalived组合)

七、HAProxy介绍(官网://www.haproxy.org/)

HAProxy
是一款提供高可用性、负载均衡以及基于TCP(第4层)和HTTP(第8层)应用的代办软件,资助虚拟主机,它是免费、神速并且可倚重的一种缓解方案。

HAProxy近年来重大有八个版本:1.④ 、1.伍 、1.6,CentOS6.6自带的卡宴PM包为1.5的。

HAProxy1.5版初始,帮助SSL、DDoS防护等作用,可看官网证实:

version 1.5 : the most featureful version, supports SSL, IPv6,
keep-alive, DDoS protection, etc…

MyCat官方推荐使用HAProxy做MyCat的高可用负载均衡代理。

① 、基本软件 版本

操作系统:CentOS-6.6-x86_64

JDK版本:jdk1.7.0_72

HAProxy版本:haproxy-1.5.16.tar.gz

MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz

MySQL版本:mysql-5.6.26.tar.gz

八、HAProxy的安装(192.168.1.191)

壹 、下载(或上传) haproxy-1.5.16.tar.gz 到 /usr/local/src,解压安装

[root@edu-haproxy-01 src]# cd /usr/local/src/

#wget //www.haproxy.org/download/1.5/src/haproxy-1.5.16.tar.gz

[root@edu-haproxy-01 src]# tar -zxvf haproxy-1.5.16.tar.gz

[root@edu-haproxy-01 src]# cd haproxy-1.5.16

② 、如需明白安装注意点,可查看HAProxy的软件表明

[root@edu-haproxy-01 haproxy-1.5.16]# less README

叁 、安装编译所需的依靠包

# yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl
openssl-devel

4、编译

# make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1
USE_ZLIB=1 PREFIX=/usr/local/haproxy

##
TA科雷傲GET是指定内核版本,高于2.6.28的提议安装为linux2628,Linux操作系统内核版本查看命令#
uname -r, ATiggoCH内定系统架构,openssl pcre zlib
那多个包须要设置不然不辅助

五 、创造安装目录 /usr/local/haproxy

# mkdir /usr/local/haproxy

陆 、执行安装

[root@edu-haproxy-01 haproxy-1.5.16]# make install
PREFIX=/usr/local/haproxy

install -d “/usr/local/haproxy/sbin”

install haproxy “/usr/local/haproxy/sbin”

install -d “/usr/local/haproxy/share/man”/man1

install -m 644 doc/haproxy.1 “/usr/local/haproxy/share/man”/man1

install -d “/usr/local/haproxy/doc/haproxy”

for x in configuration architecture haproxy-en haproxy-fr; do

install -m 644 doc/$x.txt “/usr/local/haproxy/doc/haproxy” ;

done

⑦ 、创设布局文件目录

# mkdir -p /usr/local/haproxy/conf

# mkdir -p /etc/haproxy/

⑧ 、从安顿文件模版复制配置文件,并加上配置文件软连接

# cp /usr/local/src/haproxy-1.5.16/examples/haproxy.cfg
/usr/local/haproxy/conf/

# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg

九 、拷贝错误页面,并添加目录软连接(HTTP方式选配)

# cp -r /usr/local/src/haproxy-1.5.16/examples/errorfiles
/usr/local/haproxy/

# ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles

⑩ 、拷贝开机运维文件,并赋予可举行权限

# cp /usr/local/src/haproxy-1.5.16/examples/haproxy.init
/etc/rc.d/init.d/haproxy

# chmod +x /etc/rc.d/init.d/haproxy

1① 、添加haproxy命令脚本软连接

# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin

1② 、设置HAProxy开机运行

# chkconfig –add haproxy

# chkconfig haproxy on

② 、安插环境设计:

玖 、HAProxy配置MyCat负载均衡集群

HAProxy接济TCP(第伍层)和HTTP(第⑩层)应用的代理,本节课程大家使用HAProxy来做MyCat的载重均衡代理使用的是TCP形式。在4层方式下HAProxy仅在客户端和服务器之间转载双向流量。HAProxy配置简单,拥有充分科学的服务器健康检查功用,当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复生机后会自动将该服务器投入进来。

壹 、修改haproxy.cfg 配置文件

切切实实参数表明可参看官方配置文档
/usr/local/haproxy/doc/haproxy/configuration.txt

或GitHub连接://cbonte.github.io/haproxy-dconv/configuration-1.5.html

# vi /usr/local/haproxy/conf/haproxy.cfg

## global配置中的参数为经过级其余参数,寻常与其运作的操作系统有关

global

log 127.0.0.1 local0 info ## 定义全局的syslog服务器,最多可以定义一个

###
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;暗许截止运行2个经过,

### 一般只在单进度仅能开拓少数文本讲述符的场中中才使用多进程方式

maxconn 4096 ## 设定各种haproxy进度所接受的最大并发连接数,

###
其相同命令行选项”-n”,”ulimit-n”自动统计的结果正式参照从参数设定的

# pidfile /var/run/haproxy.pid ## 进度文件(私自认同路径
/var/run/haproxy.pid)

node edu-haproxy-01 ##
定义当前节点的名称,用于HA场景中多haproxy进度共享同贰个IP地址时

description edu-haproxy-01 ## 当前实例的叙述新闻

##
defaults:用于为全部任何安插段提供暗中认同参数,那暗中认同配置参数可由下3个”defaults”所重新设定

defaults

log global ## 继承global中log的定义

mode http ## mode:所拍卖的格局 (tcp:四层 , 七层 ,
health:状态检查,只会回去OK)

### tcp:
实例运营于纯tcp情势,在客户端和劳务器端之间将建立三个全双工的连天,

#### 且不会对7层报文做其余项目标检查,此为暗中同意格局

###
实例运营于http方式,客户端请求在中转至后端服务器此前将被深度解析,

#### 全数不与RAV4FC情势包容的伸手都会被驳回

###
health:实例运转于health情势,其对入站请求仅响应“OK”消息并关闭连接,

#### 且不会记录任何日志信息,此形式将用于相应外部组件的督查情形检测请求

option httplog

retries 3

option redispatch ##
serverId对应的服务器挂掉后,强制定向到其他不奇怪的服务器

maxconn 2000 ## 前端的最大并发连接数(暗中认同为2000)

###
其不能用来backend区段,对于大型站点来说,可以尽量提升此值以便让haproxy管理总是队列,

###
从而幸免不或者回答用户请求。当然,此最大值不可以当先“global”段中的定义。

###
其余,须求专注的是,haproxy会为各类连接维持四个缓冲,每一种缓存的尺寸为8KB,

###
再加上其它的数量,各个连接将大体占用17KB的RAM空间,那表示通过适当优化后

### 有着1GB的可用RAM空间时将维护50000-四千0并发连接。

###
倘诺指定了二个过大值,极端气象中,其最后所占用的上空或者会超过如今主机的可用内存,

###
那大概会推动意料之外的结果,因而,将其设定一个可接受值放为精明相对,其专断认同为两千

timeout connect 5000ms ##
连接超时(暗中认可是飞秒,单位可以设置us,ms,s,m,h,d)

timeout client 50000ms ## 客户端超时

timeout server 50000ms ## 服务器超时

## HAProxy的意况新闻总计页面

listen admin_stats

bind :48800 ## 绑定端口

stats uri /admin-status ##总结页面

stats auth admin:admin ##
设置统计页面认证的用户和密码,假诺要设置多少个,另起一行写入即可

mode http

option httplog ## 启用日志记录HTTP请求

## listen:
用于概念通过关系“前端”和“后端”1个总体的代办,常常只对TCP流量有用

listen mycat_servers

bind :3306 ## 绑定端口

mode tcp

option tcplog ## 记录TCP请求日志

option tcpka ## 是还是不是同意向server和client发送keepalive

option httpchk OPTIONS * HTTP/1.1 Host: www ## 后端服务情形检测

### 向后端服务器的48700端口(端口值在后端服务器上经过xinetd配置)发送
OPTIONS 请求

### (原理请参见HTTP协议)
,HAProxy会依据重回内容来判定后端服务是不是可用.

### 2xx 和 3xx
的响应码表示平日情状,其余响应码或无响应表示服务器故障。

balance roundrobin ##
定义负载均衡算法,可用以”defaults”、”listen”和”backend”中,默许为轮询方式

server mycat_01 192.168.1.203:8066 check port 48700 inter 2000ms rise 2
fall 3 weight 10

server mycat_02 192.168.1.204:8066 check port 48700 inter 2000ms rise 2
fall 3 weight 10

## 格式:server <name> <address>[:[port]] [param*]

### serser 在后端声澳优(Ausnutria Hyproca)(Beingmate)个server,只好用来listen和backend区段。

###
<name>为此服务器指定的内部名称,其将会师世在日记及警示消息中

###
<address>此服务器的IPv4地址,也扶助使用可分析的主机名,但要在运转时要求分析主机名至响应的IPV4地址

###
[:[port]]点宿将客户端连接请求发往此服务器时的靶子端口,此为可采取

###
[param*]为此server设定的一名目繁多参数,均为可选拔,参数相比较多,上面仅表明多少个常用的参数:

#### weight:权重,默许为1,最大值为256,0代表不插足负载均衡

####
backup:设定为备用服务器,仅在负载均衡场景中的其余server均不得以启用此server

####
check:运营对此server执行监督情形检查,其可以凭借额外的任何参数达成更小巧的设定

#### inter:设定监督状态检查的岁月间隔,单位为微秒,暗中认同为3000,

#####
也得以选择fastinter和downinter来依据服务器端专题优化此事件延迟

####
rise:设置server从离线状态转换至正规情形必要检讨的次数(不设置的境况下,暗中认可值为2)

####
fall:设置server从健康境况转换至离线状态要求检讨的次数(不设置的图景下,暗中认同值为3)

####
cookie:为内定server设定cookie值,此处指定的值将会在乞求入站时被检查,

#####
第2次为此值采用的server将会被接续的哀求所选中,其意在落到实处持久连接的机能

####
maxconn:钦命此服务器接受的最大并发连接数,如若发往此服务器的连日数目高于此处指定的值,

#####其将被放置于请求队列,以伺机别的总是被放出

小心:多节点安插时node 、 description的值要做相应调整。

二 、根据上述HAProxy配置文件须要做以下配置

(1)添加haproxy用户组和用户

# groupadd haproxy

# useradd -g haproxy haproxy

(2)创制chroot运行的门道

# mkdir /usr/share/haproxy

(3)防火墙中开拓3306端口和48800端口

# vi /etc/sysconfig/iptables

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 48800 -j ACCEPT

重启防火墙

# service iptables restart

叁 、开启rsyslog的haproxy日志记录成效

专擅认同景况下
haproxy是不记录日志的,尽管急需记录日志,还索要配备连串的syslog,在linux系统中是rsyslog服务。syslog服务器可以当作贰个互连网中的日志监控中央,rsyslog是一个开源工具,被大面积用于Linux系统以通过TCP/UDP协议转向或接收日志音讯。安装配备rsyslog服务:

# yum install rsyslog ## 没安装的景色下实施安装

# vi /etc/rsyslog.conf

把 $ModLoad imudp 和 $UDPServerRun 514前面的 # 去掉

$ModLoad imudp ## 是模块名,协理UDP共商

$UDPServerRun 514

##同意514端口接收采用UDP和TCP协议转向过来的日志,

##而rsyslog在暗中同意情形下,正是在514端口监听UDP

确认 #### GLOBAL DIRECTIVES #### 段中是还是不是有 $IncludeConfig
/etc/rsyslog.d/*.conf没有则扩大上此配置,伸张后的功能:

图片 8

# cd /etc/rsyslog.d/ ## rsyslog服务会来此目录加载配置

# touch haproxy.conf ## 创制haproxy的日志配置文件

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

充实以下内容:

local0.* /var/log/haproxy.log

&~

##若果不添加面的的”&~”配置则除外在/var/log/haproxy.log中写入日志外,也会写入/var/log/message文件中

配置保存后重启rsyslog服务

# service rsyslog restart

Shutting down system logger: [ OK ]

Starting system logger: [ OK ]

(等到HAProxy服务运行后,就能在/var/log/haproxy.log中见到日志了)

④ 、配置连串基本的IP包转载功用

# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

使配置生效

# sysctl -p

5、启动HAProxy

# service haproxy start

# ps -ef | grep haproxy

haproxy 23921 1 0 23:27 ? 00:00:00 /usr/sbin/haproxy -D -f
/etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

root 23924 23179 0 23:27 pts/1 00:00:00 grep haproxy

⑥ 、使用MySQL客户端通过HAProxy连接MyCat

E:MySQL-5.6.17-winx64in>mysql -uuser2 -proncoo.2 -h192.168.1.191
-P3306

mysql> show databases;

mysql> use rc_schema2;

mysql> show tables;

mysql> select * from edu_user;

图片 9

写数据测试

mysql> insert into edu_user (userName, pwd) values(‘吴水成’,
‘roncoo.com’);

图片 10

下一场查看MySQL中的数据库插入及数码同步情状。

八 、登录HAProxy的情事音讯计算页面

//192.168.1.191:48800/admin-status

用户名和密码都以admin,对应的haproxy.cfg配置部分

图片 11

图片 12

三 、集群安插架构图如下:

图益气达:

HAProxy负责将呼吁分发到MyCat上,起到负载均衡的职能,同时HAProxy也能检测到MyCat是不是存活,HAProxy只会将请求转载到存活的MyCat上。假如一台MyCat服务器宕机,HAPorxy转载呼吁时不会转化到宕机的MyCat上,所以MyCat依旧可用。

五、MyCat节点2的部署

MyCat主机2(edu-mycat-02,192.168.1.204)(上一篇主从复制计划,这么快就忘了的可以看看,文末有连接)

小心:edu-mycat-01(192.168.1.203)和 edu-mycat-02(192.168.1.204)
中都要拉长(或更新)主机名映射配置。

# vi /etc/hosts

192.168.1.203 edu-mycat-01

192.168.1.204 edu-mycat-02

192.168.1.205 edu-mysql-01

192.168.1.206 edu-mysql-02

陆 、配置MyCat状态检查服务(在MyCat节点主机上陈设)

MyCat服务主机(edu-mycat-0一 、edu-mycat-02)上急需充实mycat服务的景况检测脚本,并开放相应的检测端口,以提需要HAProxy对MyCat的劳动情状进行检测判断。可以利用xinetd来完成,通过xinetd,HAProxy可以用httpchk来检测MyCat的幸存状态。(xinetd即extended
internet
daemon,xinetd是新一代的互联网守护进程服务程序,又叫一级Internet服务器。寻常用来保管二种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的意义,不过越来越强大和平安。xinetd为linux系统的根底服务)

① 、假设xinetd还不曾安装,可使用如下命令安装:

# yum install xinetd

贰 、检查/etc/xinetd.conf的最后是不是有 includedir /etc/xinetd.d
,没有就拉长

# vi /etc/xinetd.conf

三 、检查 /etc/xinetd.d 目录是或不是留存,不设有刚创造

# mkdir /etc/xinetd.d/

肆 、伸张MyCat存活状态检测服务配置

# touch /etc/xinetd.d/mycat_status

# vi /etc/xinetd.d/mycat_status

追加以下内容:

service mycat_status

{

flags = REUSE

## 使用该标记的socket_type为stream,须求安装wait为no

socket_type = stream ## 封包处理格局,Stream为TCP数据包

port = 48700 ## 服务监听端口

wait = no ## 表示不需等候,即服务将以八线程的法子运维

user = root ## 执行此服务进程的用户

server =/usr/local/bin/mycat_status ## 必要运维的劳务脚本

log_on_failure += USERID ## 登录退步记录的情节

disable = no ## 要运行服务,将此参数设置为no

}

5、添加 /usr/local/bin/mycat_status 服务脚本

# touch /usr/local/bin/mycat_status

# vi /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 ” (if mycat is running smoothly)

# “HTTP/1.x 503 Internal Server Error ” (else)

mycat=`/usr/local/mycat/bin/mycat status | grep ‘not running’ | wc -l`

if [ “$mycat” = “0” ]; then

/bin/echo -e “HTTP/1.1 200 OK “

else

/bin/echo -e “HTTP/1.1 503 Service Unavailable “

fi

⑥ 、给新增脚本赋予可举办权限

# chmod a+x /usr/local/bin/mycat_status

7、在 /etc/services 中加入 mycat_status 服务

# vi /etc/services

在最后参加:

mycat_status 48700/tcp # mycat_status

保存后,重启xinetd服务

# service xinetd restart

8、验证mycat_status服务是还是不是成功运行

# netstat -antup|grep 48700

能看出上图那样的音讯,表明服务配置成功。

⑨ 、MyCat服务主机的防火墙上打开 48700端口

# vi /etc/sysconfig/iptables

增加:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 48700 -j ACCEPT

封存后重启防火墙

# service iptables restart

本子测试:

# /usr/local/bin/mycat_status

真长!中场休息会,一起左三圈右三圈吧。看不下去的可以先收藏关心哈。

七、HAProxy介绍(官网:http://www.haproxy.org/)

HAProxy
是一款提供高可用性、负载均衡以及依据TCP(第五层)和HTTP(第8层)应用的代办软件,匡助虚拟主机,它是免费、疾速并且可靠的一种缓解方案。

HAProxy近日重大有四个版本:1.④ 、1.伍 、1.6,CentOS6.6自带的OdysseyPM包为1.5的。

HAProxy1.5版开头,资助SSL、DDoS防护等成效,可看官网证实:

version 1.5 : the most featureful version, supports SSL, IPv6,
keep-alive, DDoS protection, etc…

MyCat官方推荐应用HAProxy做MyCat的高可用负载均衡代理。

八、HAProxy的安装(192.168.1.191)

① 、下载(或上传) haproxy-1.5.16.tar.gz 到 /usr/local/src,解压安装

[root@edu-haproxy-01 src]# cd /usr/local/src/

#wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.16.tar.gz

[root@edu-haproxy-01 src]# tar -zxvf haproxy-1.5.16.tar.gz

[root@edu-haproxy-01 src]# cd haproxy-1.5.16

② 、如需询问安装注意点,可查看HAProxy的软件表明

[root@edu-haproxy-01 haproxy-1.5.16]# less README

叁 、安装编译所需的正视性包

# yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl
openssl-devel

4、编译

# make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1
USE_ZLIB=1 PREFIX=/usr/local/haproxy

##
TASportageGET是点名内核版本,高于2.6.28的提出设置为linux2628,Linux操作系统内核版本查看命令#
uname -r, A奥迪Q5CH钦定系统架构,openssl pcre zlib
那多少个包须求安装不然不支持

五 、创制安装目录 /usr/local/haproxy

# mkdir /usr/local/haproxy

六 、执行安装

[root@edu-haproxy-01 haproxy-1.5.16]# make install
PREFIX=/usr/local/haproxy

install -d “/usr/local/haproxy/sbin”

install haproxy “/usr/local/haproxy/sbin”

install -d “/usr/local/haproxy/share/man”/man1

install -m 644 doc/haproxy.1 “/usr/local/haproxy/share/man”/man1

install -d “/usr/local/haproxy/doc/haproxy”

for x in configuration architecture haproxy-en haproxy-fr; do

install -m 644 doc/$x.txt “/usr/local/haproxy/doc/haproxy” ;

done

柒 、成立布局文件目录

# mkdir -p /usr/local/haproxy/conf

# mkdir -p /etc/haproxy/

捌 、从配置文件模版复制配置文件,并丰盛配置文件软连接

# cp /usr/local/src/haproxy-1.5.16/examples/haproxy.cfg
/usr/local/haproxy/conf/

# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg

玖 、拷贝错误页面,并添加目录软连接(HTTP情势选配)

# cp -r /usr/local/src/haproxy-1.5.16/examples/errorfiles
/usr/local/haproxy/

# ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles

十 、拷贝开机运维文件,并予以可实施权限

# cp /usr/local/src/haproxy-1.5.16/examples/haproxy.init
/etc/rc.d/init.d/haproxy

# chmod +x /etc/rc.d/init.d/haproxy

1一 、添加haproxy命令脚本软连接

# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin

1贰 、设置HAProxy开机运维

# chkconfig –add haproxy

# chkconfig haproxy on

玖 、HAProxy配置MyCat负载均衡集群

HAProxy支持TCP(第6层)和HTTP(第玖层)应用的代理,本节课程大家应用HAProxy来做MyCat的载荷均衡代理使用的是TCP方式。在4层情势下HAProxy仅在客户端和服务器之间转载双向流量。HAProxy配置容易,拥有尤其不错的服务器健康检查作用,当其代理的后端服务器现身故障,HAProxy会自动将该服务器摘除,故障復苏后会自动将该服务器投入进来。

壹 、修改haproxy.cfg 配置文件

实际参数表明可参照官方配置文档
/usr/local/haproxy/doc/haproxy/configuration.txt

或GitHub连接:http://cbonte.github.io/haproxy-dconv/configuration-1.5.html

# vi /usr/local/haproxy/conf/haproxy.cfg

## global配置中的参数为经过级其余参数,经常与其运作的操作系统有关

global

log 127.0.0.1 local0 info ## 定义全局的syslog服务器,最多可以定义1个

###
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;暗中认可甘休运维3个进度,

### 一般只在单进度仅能开拓少数文本讲述符的场中中才使用多进度情势

maxconn 4096 ## 设定每一个haproxy进程所接受的最大并发连接数,

###
其相同命令行选项”-n”,”ulimit-n”自动测算的结果正式参照从参数设定的

# pidfile /var/run/haproxy.pid ## 进度文件(暗许路径
/var/run/haproxy.pid)

node edu-haproxy-01 ##
定义当前节点的名目,用于HA场景中多haproxy进度共享同二个IP地址时

description edu-haproxy-01 ## 当前实例的叙说新闻

##
defaults:用于为全部其他安顿段提供默许参数,那私行认同配置参数可由下二个”defaults”所重新设定

defaults

log global ## 继承global中log的定义

mode http ## mode:所拍卖的情势 (tcp:四层 , http:七层 ,
health:状态检查,只会重回OK)

### tcp:
实例运转于纯tcp格局,在客户端和劳动器端之间将建立3个全双工的总是,

#### 且不会对7层报文做其它项目的反省,此为默许形式

###
http:实例运营于http方式,客户端请求在倒车至后端服务器以前将被深度剖析,

#### 全部不与奥迪Q5FC形式兼容的伏乞都会被拒绝

###
health:实例运维于health情势,其对入站请求仅响应“OK”音信并关闭连接,

#### 且不会记录任何日志信息,此格局将用来相应外部组件的监察情形检测请求

option httplog

retries 3

option redispatch ##
serverId对应的服务器挂掉后,强制定向到任何符合规律的服务器

maxconn 2000 ## 前端的最大并发连接数(私自认同为两千)

###
其不可以用来backend区段,对于大型站点来说,可以不择手段提升此值以便让haproxy管理总是队列,

###
从而防止无法答应用户请求。当然,此最大值不能跨越“global”段中的定义。

###
其它,须求留意的是,haproxy会为种种连接维持五个缓冲,各种缓存的分寸为8KB,

###
再添加其它的数码,各种连接将大体占用17KB的RAM空间,那意味着通过相当优化后

### 有着1GB的可用RAM空间时将维护四千0-伍仟0并发连接。

###
借使内定了1个过大值,极端气象中,其最终所占用的空间大概会当先近期主机的可用内存,

###
那大概会推动意想不到的结果,由此,将其设定1个可承受值放为精明相对,其暗中同意为贰仟

timeout connect 5000ms ##
连接超时(暗许是飞秒,单位可以安装us,ms,s,m,h,d)

timeout client 50000ms ## 客户端超时

timeout server 50000ms ## 服务器超时

## HAProxy的状态消息计算页面

listen admin_stats

bind :48800 ## 绑定端口

stats uri /admin-status ##计算页面

stats auth admin:admin ##
设置计算页面认证的用户和密码,假若要设置多个,另起一行写入即可

mode http

option httplog ## 启用日志记录HTTP请求

## listen:
用于概念通过关系“前端”和“后端”叁个完好的代办,日常只对TCP流量有用

listen mycat_servers

bind :3306 ## 绑定端口

mode tcp

option tcplog ## 记录TCP请求日志

option tcpka ## 是不是允许向server和client发送keepalive

option httpchk OPTIONS * HTTP/1.1 Host: www ## 后端服务意况检测

### 向后端服务器的48700端口(端口值在后端服务器上通过xinetd配置)发送
OPTIONS 请求

### (原理请参考HTTP协议)
,HAProxy会依据再次回到内容来判断后端服务是或不是可用.

### 2xx 和 3xx
的响应码表示不奇怪状态,其余响应码或无响应表示服务器故障。

balance roundrobin ##
定义负载均衡算法,可用于”defaults”、”listen”和”backend”中,默许为轮询方式

server mycat_01 192.168.1.203:8066 check port 48700 inter 2000ms rise 2
fall 3 weight 10

server mycat_02 192.168.1.204:8066 check port 48700 inter 2000ms rise 2
fall 3 weight 10

## 格式:server [:[port]] [param*]

### serser 在后端声贝因美(Beingmate)个server,只好用于listen和backend区段。

### 为此服务器钦点的其中名称,其将会并发在日记及警示音信中

###
此服务器的IPv4地址,也扶助接纳可分析的主机名,但要在运转时要求分析主机名至响应的IPV4地址

###
[:[port]]点大将客户端连接请求发往此服务器时的对象端口,此为可挑选

###
[param*]为此server设定的一层层参数,均为可挑选,参数相比较多,上边仅表达多少个常用的参数:

#### weight:权重,暗许为1,最大值为256,0代表不参与负载均衡

####
backup:设定为备用服务器,仅在负载均衡场景中的其余server均不可以启用此server

####
check:运维对此server执行监督状态检查,其可以依靠额外的其余参数完毕更精致的设定

#### inter:设定监督情形检查的时日距离,单位为毫秒,暗许为2000,

#####
也足以使用fastinter和downinter来依照服务器端专题优化此事件延迟

####
rise:设置server从离线状态转换至正规景况需要检讨的次数(不安装的动静下,私行认同值为2)

####
fall:设置server从健康意况转换至离线状态需求检查的次数(不安装的事态下,默认值为3)

####
cookie:为指定server设定cookie值,此处钦赐的值将会在呼吁入站时被检查,

#####
第三回为此值采取的server将会被三番五次的请求所选中,其意在贯彻持久连接的成效

####
maxconn:内定此服务器接受的最大并发连接数,倘诺发往此服务器的连接数目高于此处指定的值,

#####其将被停放于请求队列,以伺机其余总是被放出

只顾:多节点计划时node 、 description的值要做相应调整。

二 、根据上述HAProxy配置文件要求做以下配置

(1)添加haproxy用户组和用户

# groupadd haproxy

# useradd -g haproxy haproxy

(2)创建chroot运营的路径

# mkdir /usr/share/haproxy

(3)防火墙中开辟3306端口和48800端口

# vi /etc/sysconfig/iptables

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 48800 -j ACCEPT

重启防火墙

# service iptables restart

三 、开启rsyslog的haproxy日志记录功用

暗中认同情状下
haproxy是不记录日志的,借使急需记录日志,还索要配备种类的syslog,在linux系统中是rsyslog服务。syslog服务器可以当做3个网络中的日志监控中央,rsyslog是一个开源工具,被普遍用于Linux系统以通过TCP/UDP协议转向或收受日志音信。安装配置rsyslog服务:

# yum install rsyslog ## 没安装的状态下实施安装

# vi /etc/rsyslog.conf

把 $ModLoad imudp 和 $UDPServerRun 514前面的 # 去掉

$ModLoad imudp ## 是模块名,协理UDP研商

$UDPServerRun 514

##允许514端口接收拔取UDP和TCP协议转向过来的日志,

##而rsyslog在暗许景况下,正是在514端口监听UDP

确认 #### GLOBAL DIRECTIVES #### 段中是还是不是有 $IncludeConfig
/etc/rsyslog.d/*.conf没有则扩张上此配置,增添后的法力:

# cd /etc/rsyslog.d/ ## rsyslog服务会来此目录加载配置

# touch haproxy.conf ## 创设haproxy的日记配置文件

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

充实以下内容:

local0.* /var/log/haproxy.log

&~

##倘诺不加上边的的”&~”配置则除外在/var/log/haproxy.log中写入日志外,也会写入/var/log/message文件中

布置保存后重启rsyslog服务

# service rsyslog restart

Shutting down system logger: [ OK ]

Starting system logger: [ OK ]

(等到HAProxy服务运转后,就能在/var/log/haproxy.log中看到日志了)

四 、配置连串基本的IP包转载效率

# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

使配置生效

# sysctl -p

5、启动HAProxy

# service haproxy start

# ps -ef | grep haproxy

haproxy 23921 1 0 23:27 ? 00:00:00 /usr/sbin/haproxy -D -f
/etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

root 23924 23179 0 23:27 pts/1 00:00:00 grep haproxy

⑥ 、使用MySQL客户端通过HAProxy连接MyCat

E:MySQL-5.6.17-winx64in>mysql -uuser2 -proncoo.2 -h192.168.1.191
-P3306

mysql> show databases;

mysql> use rc_schema2;

mysql> show tables;

mysql> select * from edu_user;

写数据测试

mysql> insert into edu_user (userName, pwd) values(‘吴水成’,
‘roncoo.com’);

然后查看MySQL中的数据库插入及数量同步意况。

捌 、登录HAProxy的场所音讯总括页面

http://192.168.1.191:48800/admin-status

用户名和密码都以admin,对应的haproxy.cfg配置部分

已完工专题(关切后翻看):

【mysql优化专题】【三十二线程/池专题】【架构技术专题】

立异中专题(关心后翻看):

【dubbo专题】【dubbo源码专题】【JVM专题】【HTTP协议专题】【设计情势专题】

【高并发专题】【架构技术专题】【netty专题】【数据结构专题】【redis专题】

相关文章