负载均衡集群总结(Haproxy)

2018/04/24 22:59
阅读数 14

环境:Centos 6.9,Mysql 8.0


 首先要先配置mysql主从复制集,可以参考我的上一篇>>Mysql 主从复制总结(详细)

       我的主节点在(master):192.168.110.76

       两个从节点在(slave):192.168.110.77,192.168.110.78

    负载均衡节点(proxy):192.168.110.69

  mysql8.0和5.7区别不大,8.0在配置主从的时候默认开启了binlog,5.7手动起一下就好,下文有启动方法。

HaProxy

 


 

HaProxy、Lvs、Nginx

   Nginx基于http 在web领域,路径解析功能很强大。曾经自己手动搭载过,不复杂。性能最低

     Lvs(Linux 虚拟服务)性能最高

     HaProxy基于Tcp可以代理mysql

    下载地址:www.haproxy.org(翻墙去下载,之后上传到master) 我下载的是1.7.10

步骤


  首先,在主节点master创建用户授予权限,并确保可以同步到从节点。

  create user 'test'@'192.168.110.%' identified by 'Test_123456';

  grant all on *.* to 'test'@'192.168.110.%';

  解压好haproxy文件准备编译安装它 tar -zxvf haproxy-1.7.10.tar.gz 

  

      然后使用 make TARGET=linux26(linux内核)

       

  提示没有安装gcc。安装:yum install gcc-c++

  安装完成后从新进行编译。(很快)

  编译成功下一步,进行安装 make install PREFIX=/usr/local/haproxy

       接下来进入/usr/local/haproxy,创建一个conf文件夹放置我们的配置文件。mkdir conf ; cd conf ; touch haproxy.cnf;vim haproxy.cnf

 

global
        daemon   #后台方式运行
        nbproc 1
        pidfile  /usr/local/haproxy/conf/haproxy.pid

defaults
	 mode tcp  		#默认的模式mode{tcp|http|health},tcp是4层,http是7层,health只会返回ok
	 retries 2 	     	#两次链接失败就认为是服务器不可用,也可以通过后面设置
	 option redispatch   	#当serverId对应的服务器挂掉后,强制指定向到其他健康的服务器
	 option abortonclose 	#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
	 maxconn 4096 		#默认的最大连接数
	 timeout connect 5000ms #链接超时
	 timeout client 30000ms #客户端超时
	 timeout server 30000ms #服务器超时
	 #timeout check 2000	#=心跳检测超时
	 log 127.0.0.1 local0 err #[err warning info debug]
##################test1配置#####################
listen test1 			#这里是配置负载均衡,test1是名字,可以任意
	bind 0.0.0.0:3306      #这里是监听的IP地址和端口,本机就是0.0.0.0端口号可以是0~6553之间,要避免端口冲突
	mode tcp		#链接的协议tcp
	#maxconn 4086
	#log 127.0.0.1 local0 debug
	server s1 192.168.110.77:3306 #负载机器
	server s2 192.168.119.78:3306 #负载机器,多个往下排 后面加check port 3306就会心跳检查
listen admin_stats
    bind 0.0.0.0:8888
    mode http
    stats uri /test_haproxy
    stats auth admin:admin

  

   echo 1 > haproxy.pid

   ./sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cnf 启动haproxy  配置完成!

  数据库访问连接访问的是proxy结点的ip,用户名和密码是刚创建的test。

  

 

问题


 

  可能是因为我的mysql使用的是8.0,在远程连接的时候出现

  authentication plugin 'caching_sha2_password' cannot be loaded的错误。

      有两种解决办法:

   1、ALTER USER 'username'@'IP' IDENTIFIED WITH mysql_native_password BY 'password';

   2、修改/etc/my.cnf

   default_authentication_plugin=mysql_native_password  并从新启动mysql服务。

Haproxy算法有8种


 

一、roundrobin,表示简单的轮询,负载均衡基本都具备的。

二、static-rr,表示根据权重。

三、leastconn,表示最少连接者优先。

四、source,表示根据请求源IP。

五、url,表示根据请求的url。

六、url_param,表示根据请求的URI参数'balance url_param' requires an URL parameter name

七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求

八、rdp-cookie,表示根据cookie(name)来锁定并哈希每一次tcp请求

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部