最薄弱的就是接连,另一个是后端与数据库的连天

八、HAProxy的安装(192.168.1.191)

1、下载(或上传) 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

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

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

3、安装编译所需的重视包

# 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

##
TARGET是点名内核版本,高于2.6.28的提出设置为linux2628,Linux操作系统内核版本查看命令#
uname -r, ARCH指定系统架构,openssl pcre zlib
这多个包需求设置不然不协助

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

# mkdir /usr/local/haproxy

6、执行安装

[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

7、创制布局文件目录

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

# mkdir -p /etc/haproxy/

8、从布局文件模版复制配置文件,并累加配置文件软连接

# 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

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

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

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

10、拷贝开机启动文件,并予以可举办权限

# 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

11、添加haproxy命令脚本软连接

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

12、设置HAProxy开机启动

# chkconfig –add haproxy

# chkconfig haproxy on

五、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的负荷均衡落成mysql集群,进步mysql的完好质量。(可用组合很多,如LVS+keepalived组合、haproxy+keepalived组合)

一、为啥须求mysql集群?

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

图片 1

版权归小编所有,哈哈

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

但是,倘诺请求激增,照旧有恢宏的询问压力到MySQL怎么做呢?

万能的程序员仍旧要想艺术缓解MySQL的瓶颈。那时候,集群出现了。在后端与数据库中大家得以采取类似mycat的载重均衡完成mysql集群,进步mysql的完整质量。(可用组合很多,如LVS+keepalived组合、haproxy+keepalived组合)

图片 2

二、安插环境设计:

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

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

HAProxy方今首要有多少个版本:1.4、1.5、1.6,CentOS6.6自带的RPM包为1.5的。

HAProxy1.5版先导,帮忙SSL、DDoS防护等效果,可看官网证实:

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

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

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

二、部署环境设计:

图片 3

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

HAProxy
是一款提供高可用性、负载均衡以及按照TCP(第四层)和HTTP(第七层)应用的代理软件,扶助虚拟主机,它是免费、急忙并且可信赖的一种缓解方案。

HAProxy近日主要有八个版本:1.4、1.5、1.6,CentOS6.6自带的RPM包为1.5的。

HAProxy1.5版开始,援救SSL、DDoS防护等成效,可看官网证实:

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

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

三、集群陈设架构图如下:

图片 4

图解表明:

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

只是,固然请求激增,仍旧有恢宏的询问压力到MySQL如何做呢?

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

MyCat服务主机(edu-mycat-01、edu-mycat-02)上急需充实mycat服务的状态检测脚本,并绽放相应的检测端口,以提要求HAProxy对MyCat的服务情况举办检测判断。可以应用xinetd来兑现,通过xinetd,HAProxy可以用httpchk来检测MyCat的存活状态。(xinetd即extended
internet
daemon,xinetd是新一代的互联网守护进度服务程序,又叫顶尖Internet服务器。平日用来治本各样轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的效果,不过越来越强有力和保山。xinetd为linux系统的底子服务)

1、要是xinetd还并未设置,可采取如下命令安装:

# yum install xinetd

2、检查/etc/xinetd.conf的末尾是或不是有 includedir /etc/xinetd.d
,没有就增进

# vi /etc/xinetd.conf

图片 5

3、检查 /etc/xinetd.d 目录是或不是留存,不存在刚创造

# mkdir /etc/xinetd.d/

4、增加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

6、给新增脚本赋予可实施权限

# 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

能来看上图那样的新闻,表明服务配置成功。

9、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时乘机时间的增高,用户量以及数据量的逐渐扩张,访问量更是激增,最后将会使MySQL达到某个瓶颈,那么MySQL的品质将会大大下落。如何是好?前面早已讲过十一篇优化方案,接下去自己将助教MySQL高可用负载均衡这一措施。其中落到实处高可用负载均衡的点子有好多,例如LVS+keepalived组合完成、haproxy+keepalived组合完毕等等,近日用mycat的越多,这里我们应用HAProxy

  • MyCat组合落成MySQL高可用负载均衡这一技艺。

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

HAProxy帮衬TCP(第四层)和HTTP(第七层)应用的代办,本节课程大家拔取HAProxy来做MyCat的载荷均衡代理使用的是TCP情势。在4层形式下HAProxy仅在客户端和服务器之间转载双向流量。HAProxy配置简单,拥有分外正确的服务器健康检查成效,当其代理的后端服务器现亡故障,HAProxy会自动将该服务器摘除,故障复苏后会自动将该服务器进入进来。

1、修改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服务器,最多可以定义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)

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

description edu-haproxy-01 ## 当前实例的描述信息

##
defaults:用于为所有其他布置段提供默许参数,那默许配置参数可由下一个”defaults”所重新设定

defaults

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

mode http ## mode:所处理的形式 (tcp:四层 , 七层 ,
health:状态检查,只会回来OK)

### tcp:
实例运行于纯tcp情势,在客户端和劳务器端之间将建立一个全双工的总是,

#### 且不会对7层报文做其余类型的检讨,此为默许形式

###
实例运行于http格局,客户端请求在转会至后端服务器从前将被深度解析,

#### 所有不与RFC方式包容的伸手都会被拒绝

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

#### 且不会记录任何日志消息,此情势将用来相应外部组件的监控状态检测请求

option httplog

retries 3

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

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

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

###
从而防止不可以回答用户请求。当然,此最大值不可能超越“global”段中的定义。

###
其它,必要留意的是,haproxy会为每个连接维持五个缓冲,每个缓存的轻重缓急为8KB,

###
再添加其余的数目,每个连接将大概占用17KB的RAM空间,那意味着通过极度优化后

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

###
假如指定了一个过大值,极端气象中,其最后所占有的上空可能会领先近来主机的可用内存,

###
那或许会带来意料之外的结果,因而,将其设定一个可接受值放为精明相对,其默许为2000

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 <name> <address>[:[port]] [param*]

### serser 在后端声美赞臣(Meadjohnson)个server,只好用来listen和backend区段。

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

###
<address>此服务器的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的值要做相应调整。

2、依照以上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

3、开启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中见到日志了)

4、配置连串基本的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

6、使用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中的数据库插入及数码同步情形。

8、登录HAProxy的气象音讯计算页面

//192.168.1.191:48800/admin-status

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

图片 11

图片 12

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

HAProxy帮忙TCP(第四层)和HTTP(第七层)应用的代理,本节课程大家使用HAProxy来做MyCat的载荷均衡代理使用的是TCP格局。在4层情势下HAProxy仅在客户端和服务器之间转载双向流量。HAProxy配置简单,拥有尤其科学的服务器健康检查功用,当其代理的后端服务器现谢世障,HAProxy会自动将该服务器摘除,故障苏醒后会自动将该服务器进入进来。

1、修改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服务器,最多可以定义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)

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形式,在客户端和劳务器端之间将确立一个全双工的连接,

#### 且不会对7层报文做任何类型的反省,此为默认形式

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

#### 所有不与RFC方式包容的伏乞都会被拒绝

###
health:实例运行于health方式,其对入站请求仅响应“OK”音讯并关闭连接,

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

option httplog

retries 3

option redispatch ##
serverId对应的服务器挂掉后,强制定向到其余正常的服务器

maxconn 2000 ## 前端的最大并发连接数(默许为2000)

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

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

###
其它,需求专注的是,haproxy会为每个连接维持五个缓冲,每个缓存的分寸为8KB,

###
再添加其余的多少,每个连接将大体占用17KB的RAM空间,这代表通过适当优化后

### 有着1GB的可用RAM空间时将有限支撑40000-50000并发连接。

###
若是指定了一个过大值,极端气象中,其最终所占有的空间可能会超过方今主机的可用内存,

###
那恐怕会推动意料之外的结果,由此,将其设定一个可承受值放为精明相对,其默许为2000

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)(Nutrilon)个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的值要做相应调整。

2、按照以上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

3、开启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没有则扩张上此配置,增添后的作用:

# 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中看看日志了)

4、配置种类基本的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

6、使用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中的数据库插入及数据同步情形。

8、登录HAProxy的图景信息统计页面

http://192.168.1.191:48800/admin-status

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

八、HAProxy的安装(192.168.1.191)

1、下载(或上传) 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

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

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

3、安装编译所需的看重性包

# 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

##
TARGET是点名内核版本,高于2.6.28的提出安装为linux2628,Linux操作系统内核版本查看命令#
uname -r, ARCH指定系统架构,openssl pcre zlib
那三个包需求设置不然不扶助

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

# mkdir /usr/local/haproxy

6、执行安装

[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

7、创设布局文件目录

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

# mkdir -p /etc/haproxy/

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

# 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

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

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

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

10、拷贝开机启动文件,并给予可实施权限

# 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

11、添加haproxy命令脚本软连接

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

12、设置HAProxy开机启动

# chkconfig –add haproxy

# chkconfig haproxy on

已停止专题(关怀后翻看):

【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

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

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

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

三、集群计划架构图如下:

图解表明:

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-01、edu-mycat-02)上急需充实mycat服务的景况检测脚本,并开放相应的检测端口,以提须求HAProxy对MyCat的劳动情形举行检测判断。可以利用xinetd来贯彻,通过xinetd,HAProxy能够用httpchk来检测MyCat的并存状态。(xinetd即extended
internet
daemon,xinetd是新一代的网络守护进度服务程序,又叫一流Internet服务器。平时用来治本多样轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的效应,不过越来越强硬和平安。xinetd为linux系统的底子服务)

1、假若xinetd还一直不设置,可使用如下命令安装:

# yum install xinetd

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

# vi /etc/xinetd.conf

3、检查 /etc/xinetd.d 目录是还是不是存在,不存在刚创设

# mkdir /etc/xinetd.d/

4、增添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

6、给新增脚本赋予可进行权限

# 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

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

9、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

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

一、基本软件 版本

操作系统: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

一、为啥必要mysql集群?

版权归作者所有,哈哈

一个高大的分布式系统的品质瓶颈中,最薄弱的就是接连。连接有多个,一个是客户端与后端的连接,另一个是后端与数据库的一连。简单如图下四个青色框框(其实,那张图是自己在悟空问答解答旁人的时候用Windows的自带画板画的,勿喷啊..)

相关文章