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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM