使用mysql服务实现负载均衡
mysql 长连接(tcp协议)模拟负载均衡
1.存在member,member的port与mysql服务port一致为3306
2.vip绑定浮动ip
3.开启mysql服务:
#service mysqld start(centos6.5)
#systemctl start mysqld (centos7)
4.关闭云主机防火墙:
#service iptables stop(centos6.5)
#systemctl stop firewalld(centos7)
5.允许mysql服务远程访问,并新建一个数据库
#GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
#create database test
6.远程访问mysql
#mysql -u<远程登陆的用户> -p -h<ip> -P<port>
Mysql实现负载均衡:
两台云主机上安装mysql服务,云主机ip分别为:server1:192.168.5.11、server2:192.168.5.12 vip浮动ip:25.0.0.165
分别创建不同的数据库:
Server1:
>mysql -uroot -p
>create database member1;
Server2:
>mysql -uroot -p
>create database member2;
客户端测试一下数据库服务:
Mysql -u root -p 12345 -h 192.168.5.11 -e “show databases;”
Mysql -u root -p 12345 -h 192.168.5.12 -e “show databases;”
修改mysql配置文件:
vi /etc/my.cnf 修改监听端口
查看haproxy配置文件中是否更新配置
Vim /var/lib/neutron/lbaas/<pool-id>/conf
使用脚本持续访问mysql
create_connections.sh
#!/usr/bin/expect
#配置登陆数据库的端口
set vipport 80
#配置登陆数据库的ip地址
set vipip 25.0.4.194
#配置数据库用户名
set username admin
#配置数据库登陆密码
set password admin
spawn mysql -h $vipip -u $username -P $vipport -p
#spawn ssh -p $port oracle@$oracleip
expect "Enter password:"
send "$password\r"
expect "mysql> "
#send "spool content.txt\r"
send "show databases;\r"
expect "mysql> "
send "select sleep(600);\r"
expect "mysql> "
send "show databases;\r"
#send "spool off\r"
#send "quit\r"
expect eof
loop.sh
#!/bin/bash
i=0
main ()
{
for i in {1..1000}
do
{
i=i+1
expect -f create_connections.sh
}&
done
}
main
使用&实现shell脚本的并行
如果负载均衡不生效,在pool所在节点监听一下member是否正常:
ipnetns exec qlbaas-<vip-port-id> curl http://<member-ip>
ipnetns相关命令:
查看namespace:ip netns list
监听服务:ip netns exec qlbaas-telnet
遇到的问题及解决方法:
1.远程访问返回2013错误,可以依照网上说的方式先试着解决一下,如果仍然无法实现,需要检查负载均衡的协议是否为tcp协议