日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

docker学习系列14 使用haproxy实现mysql集群的负载均衡...

發布時間:2025/3/21 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker学习系列14 使用haproxy实现mysql集群的负载均衡... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上節中我們創建了 mysql 集群。
實際工作中,我們不希望讓某一數據庫節點處理所有的請求,這樣的話單個負載高,性能差。

image.png

在這里我們使用haproxy作為負載均衡的中間件,類似的還有LVS,但是好像不支持虛擬機,在docker中用不了。

image.png

實現流程:

  • 下載鏡像 docker pull haproxy
  • 宿主機創建 haproxy 的配置文件,比如路徑是 D:\Docker\haproxy\haproxy.cfg
  • 最重要的就是配置文件了。這里內容如下:
  • globaldaemon# nbproc 1# pidfile /var/run/haproxy.pid# 工作目錄chroot /usr/local/etc/haproxydefaultslog 127.0.0.1 local0 err #[err warning info debug]mode http #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OKretries 2 #兩次連接失敗就認為是服務器不可用,也可以通過后面設置option redispatch #當serverId對應的服務器掛掉后,強制定向到其他健康的服務器option abortonclose #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接option dontlognull #日志中不記錄負載均衡的心跳檢測記錄maxconn 4096 #默認的最大連接數timeout connect 5000ms #連接超時timeout client 30000ms #客戶端超時timeout server 30000ms #服務器超時#timeout check 2000 #=心跳檢測超時######## 監控界面配置 ################# listen admin_status# 監控界面訪問信息bind 0.0.0.0:8888mode http# URI相對地址stats uri /dbs# 統計報告格式stats realm Global\ statistics# 登錄賬戶信息stats auth admin:123456 ########frontend配置###################### mysql負載均衡配置 ############### listen proxy-mysqlbind 0.0.0.0:3306mode tcp# 負載均衡算法# static-rr 權重, leastconn 最少連接, source 請求IP, 輪詢 roundrobinbalance roundrobin# 日志格式option tcplog# 在 mysql 創建一個沒有權限的haproxy用戶,密碼為空。 haproxy用戶# create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;option mysql-check user haproxy# 這里是容器中的IP地址,由于配置的是輪詢roundrobin,weight 權重其實沒有生效server MYSQL_1 172.18.0.2:3306 check weight 1 maxconn 2000server MYSQL_2 172.18.0.3:3306 check weight 1 maxconn 2000server MYSQL_3 172.18.0.4:3306 check weight 1 maxconn 2000# 使用keepalive檢測死鏈# option tcpka #########################################
  • 啟動 haproxy 的容器,鏡像名稱為 h1,網絡名稱使用上節中創建的 pxc-network,就是和 mysql 集群處于同一網絡。
    docker run -it -d -p 4001:8888 -p 4002:3306 -v D:/Docker/haproxy:/usr/local/etc/haproxy --name h1 --net=pxc-network
  • 進去容器,并讓 haproxy 加載配置
    docker exec -it h1 bash
    haproxy -f /usr/local/etc/haproxy/
  • 宿主機打開 http://localhost:4001/dbs 這是haproxy 提供的圖形界面
  • image.png

    可以看到每個mysql節點運行狀態是綠色,說明正常。

  • 測試,停掉一個數據庫節點 docker stop pxc_node1 ,發現有一個變紅了。
  • image.png
  • 項目中可以使用配置的 4002 來連接數據庫,這樣請求會被分發到各個子節點。
  • 總結:

  • 數據庫的負載均衡配置還是比較簡單的,關鍵是負載均衡算法,如果每個數據庫節點配置都一樣,可以使用輪詢算法,如果不一樣,可以使用權重算法,讓配置高的多接收請求。
  • 官方的教程
  • 問題:

  • 啟動停掉的節點 docker start pxc_node1,mysql恢復不起來了。待研究。有誰知道麻煩告訴我。
  • image.png

    總結

    以上是生活随笔為你收集整理的docker学习系列14 使用haproxy实现mysql集群的负载均衡...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。