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協議
