Mysql集群
Mysql集群
配置mysql主主复制
修改my.cnf文件
192.168.128.151的mysql配置
server-id=11 #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log_bin=mysql-bin #开启二进制日志
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
binlog-ignore=mysql #忽略mysql库【我一般都不写】
binlog-ignore=information_schema #忽略information_schema库【我一般都不写】
replicate-do-db=shiro #要同步的数据库,默认所有库
192.168.128.152的mysql配置
server-id=12
log_bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=shiro
重启systemctl restart mariadb.service
配置192.168.128.151主从复制
在192.168.128.152中创建一个192.168.128.151主机中可以登录的MySQL用户
MariaDB [(none)]> create user mysql2
mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
mysql>FLUSH PRIVILEGES;
查看192.168.128.152二进制日志
mysql>show variables like '%log_bin%';
MariaDB [(none)]> show master status;
告知192.168.128.151二进制名称和位置
MariaDB [mysql]> change master to
-> master_host='192.168.128.151',
-> master_user='root',
-> master_password='root',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=245;
查看结果
MariaDB [mysql]> slave start
MariaDB [mysql]> show slave status\G
配置192.168.128.152主从复制
同上
Haproxy集群
Haproxy介绍
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。
国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统(CDN的全称是Content Delivery Network,即内容分发网络)
安装Haproxy
下载
http://pkgs.fedoraproject.org/repo/pkgs/haproxy/[root@localhost home]# wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.7.8.tar.gz/sha512/e1d65c8a4607c01d52628f36f8c7342096267130a0f949474746f571158e4f795281f78765004c214a0527f74ce180760f9cc910d3650d30026776076d721c0c/haproxy-1.7.8.tar.gz
解压
[root@localhost home]# tar -zxvf haproxy-1.7.8.tar.gz
安装
[root@A local]# cd haproxy-1.6.9
[root@A local]# make TARGET=linux3100 CPU=x86_64 PREFIX=/usr/local/haprpxy #编译 uname -r #查看系统内核版本号
[root@A local]# make install PREFIX=/usr/local/haproxy #安装
#数说明:
#TARGET=linux3100
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26
#kernel 大于2.6.28的用:TARGET=linux2628
#CPU=x86_64 #使用uname -r查看系统信息,如x86_64 x86_64 x86_64 GNU/Linux,此时该参数就为x86_64
#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy为haprpxy安装路径
设置Haproxy
mkdir -p /usr/local/haproxy/conf #创建配置文件目录
mkdir -p /etc/haproxy #创建配置文件目录
touch /usr/local/haproxy/conf/haproxy.cfg #创建配置文件
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件软连接
cp -r /home/haproxy-1.7.8 /examples/errorfiles/usr/local/haproxy/errorfiles #拷贝错误页面
ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles #添加软连接
mkdir -p /usr/local/haproxy/log #创建日志文件目录
touch /usr/local/haproxy/log/haproxy.log #创建日志文件
ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log #添加软连接
cp /home/haproxy-1.7.8/examples/haproxy.init /etc/rc.d/init.d/haproxy #拷贝开机启动文件
chmod +x /etc/rc.d/init.d/haproxy #添加脚本执行权限
chkconfig haproxy on #设置开机启动
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin #添加软连接
配置haproxy.cfg参数
cp /usr/local/haproxy/conf/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg-bak #备份
vi /usr/local/haproxy/conf/haproxy.cfg #编辑,修改
haproxy.cfg文件内容
global
log 127.0.0.1 local2 //日志定义级别
chroot /var/lib/haproxy //当前工作目录
pidfile /var/run/haproxy.pid //进程id
maxconn 4000 //最大连接数
user haproxy //运行改程序的用户
group haproxy
daemon //后台形式运行
stats socket /var/lib/haproxy/stats
defaults
mode tcp //haproxy运行模式(http | tcp | health)
log global
option dontlognull
option redispatch //serverId对应的服务器挂掉后,强制定向到其他健康的服务器
retries 3 //三次连接失败则服务器不用
timeout http-request 10s
timeout queue 1m
timeout connect 10s //连接超时
timeout client 1m //客户端超时
timeout server 1m //服务器超时
timeout http-keep-alive 10s
timeout check 10s //心跳检测
maxconn 600 //最大连接数
listen stats //配置haproxy状态页(用来查看的页面)
mode http
bind :8888
stats enable
stats hide-version //隐藏haproxy版本号
stats uri /haproxyadmin?stats //一会用于打开状态页的uri
stats realm Haproxy\ Statistics //输入账户密码时的提示文字
stats auth admin:admin //用户名:密码
frontend main
bind 0.0.0.0:3306 //使用3306端口。监听前端端口【表示任何ip访问3306端口都会将数据轮番转发到mysql服务器群组中】
default_backend mysql //后端服务器组名
backend mysql
balance leastconn //使用最少连接方式调度
server mysql1 192.168.128.151:3306 check port 3306 maxconn 300
server mysql2 192.168.128.152:3306 check port 3306 maxconn 300
访问http://192.168.128.155:8888/haproxyadmin?stats
错误问题解决
错误:haproxy: 第 26 行:[: =: 期待一元表达式
[ ${NETWORKING} = "no" ] && exit 0
[ "$NETWORKING" = "no" ] && exit 0
错误二:
# service haproxy start
Starting haproxy: [ALERT] 118/194702 (1611) : [/usr/sbin/haproxy.main()] Cannot chroot(/usr/share/haproxy).
[失败]
如果报以上的错误,可以这样解决:
手动建立目录 : mkdir /usr/share/haproxy
另外,如果有错,可以尝试使用调试启动命令:
haproxy -f haproxy.cfg -d
另外,如果在安装中,需要使用scp命令时,但报:-bash: scp: command not found
解决:yum install openssh-clients
负载均衡软件对比(LVS、Nginx、HAproxy)
负载均衡软件:比较常见的有LVS、Nginx、HAproxy等,其中LVS是建立在四层协议上面的,而另外Nginx和HAproxy是建立在七层协议之上的,下面分别介绍关于
LVS:使用集群技术和linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS的特点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生;
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3、工作稳定,自身有完整的双机热备方案;
4、无流量,保证了均衡器IO的性能不会收到大流量的影响;
5、应用范围比较广,可以对所有应用做负载均衡;
6、LVS需要向IDC多申请一个IP来做Visual IP,因此需要一定的网络知识,所以对操作人的要求比较高。
Nginx的特点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2、Nginx对网络的依赖比较小;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;
7、Nginx能支持http和Email,这样就在适用范围上面小很多;
8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。
HAProxy的特点是:
1、HAProxy是工作在网络7层之上。
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6、HAProxy可以对mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
查看原文:http://www.coder306.cn/?p=173