點擊查看代碼
同步
systemctl stop firewalld && systemctl disable firewalld
systemctl stop NetworkManager && systemctl disable NetworkManager
setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
yum install chrony -y
systemctl enable chronyd --now
chronyc sources
ip修改(這里改成核彈發送密碼)
10.1.161.28
10.1.161.26(原本是25,被人占了ip)
10.1.161.6
主機名設置
sudo hostnamectl set-hostname node01
sudo hostnamectl set-hostname node02
sudo hostnamectl set-hostname node03
全部
bash
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
grep initrd16 /boot/grub2/grub.cfg
grub2-set-default 0
reboot
uname -a
鏡像拉我們的私有庫:我們的倉庫地址():
https://10.1.161.110:5000/
私有庫使用步驟:
-----------------------------可省略:這個弄起來太麻煩,一般情況下,都會用k8s整一個插件,用k8s喊我就行,一般情況就下個鏡像包load一下就好,大多數鏡像都是可以直接拉下來的。
或者有時間也可以去b站自己學k8s...,找時間最新的。docker和k8s不走外部代理,所以代理是沒有用的。解決方法就是用k8s的那個插件
--------------
docker pull percona/percona-xtradb-cluster:5.7.27
docker pull swarm
docker tag percona/percona-xtradb-cluster:5.7.27 10.1.161.110:5000/percona/percona-xtradb-cluster:5.7.27
docker tag swarm:latest 10.1.161.110:5000/percona/swarm:latest
docker push 10.1.161.110:5000/percona/percona-xtradb-cluster:5.7.27
docker push 10.1.161.110:5000/percona/swarm:latest
---------------------------------------可省略--------------
curl -fsSL https://get.docker.com | bash
yum -y install docker-ce
sudo systemctl start docker
sudo systemctl enable docker
docker pull percona/percona-xtradb-cluster:5.7.21
#pxc無法映射目錄,只能創建數據卷,分別創建mysql數據卷和配置卷
docker volume create mysql-data
docker volume create mysql-conf
docker run -d -v mysql-data:/var/lib/mysql --restart always -e TZ=Asia/Shanghai \
-e CLUSTER_NAME=PXC -v mysql-conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456 \
--privileged --name=mysql-node1 --net=host percona/percona-xtradb-cluster:5.7.21
navicat看下能不能連,能連說明node1安裝成功
(附加:
sql_model的模式如果要更改的話:
查一下:docker inspect mysql-conf
修改my.cnf
然后docker restart mysql-node1
)
跟第一個差不多:
#pxc無法映射目錄,只能創建數據卷,分別創建mysql數據卷和配置卷
docker volume create mysql-data
docker volume create mysql-conf
docker run -idt -v mysql-data:/var/lib/mysql --restart always -e TZ=Asia/Shanghai \
-e CLUSTER_NAME=PXC -v mysql-conf:/etc/mysql -e CLUSTER_JOIN=10.1.161.28 \
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456 \
--privileged --name=mysql-node2 --net=host percona/percona-xtradb-cluster:5.7.21
然后重復第一個節點的步驟,修改my.cnf然后重啟
node2也好了
測試一下:
node1新建一個用戶:
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
node2用戶表看一下有沒有這個用戶
可選:
繼續負載均衡:
#拉取haprox鏡像
docker pull haproxy
#新建目錄
mkdir -p /data/haproxy
#新建配置文件
vi /data/haproxy/haproxy.cfg
#haproxy.cfg配置:注意改一下server,server就是兩個數據庫的連接
global
#工作目錄,這邊要和創建容器指定的目錄對應
# chroot /usr/local/etc/haproxy
#日志文件
log 127.0.0.1 local5 info
#守護進程運行
daemon
defaults
log global
mode http
#日志格式
option httplog
#日志中不記錄負載均衡的心跳檢測記錄
option dontlognull
#連接超時(毫秒)
timeout connect 5000
#客戶端超時(毫秒)
timeout client 50000
#服務器超時(毫秒)
timeout server 50000
#監控界面
listen admin_stats
#監控界面的訪問的IP和端口
bind 0.0.0.0:8888
#訪問協議
mode http
#URI相對地址
stats uri /dbs_monitor
#統計報告格式
stats realm Global\ statistics
#登陸帳戶信息
stats auth admin:admin
#數據庫負載均衡
listen proxy-mysql
#訪問的IP和端口,haproxy開發的端口為3306
#假如有人訪問haproxy的3306端口,則將請求轉發給下面的數據庫實例
bind 0.0.0.0:3306
#網絡協議
mode tcp
#負載均衡算法(輪詢算法)
#輪詢算法:roundrobin
#權重算法:static-rr
#最少連接算法:leastconn
#請求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中創建一個沒有權限的haproxy用戶,密碼為空。
#Haproxy使用這個賬戶對MySQL數據庫心跳檢測
option mysql-check user haproxy
server MySQL_1 10.1.161.28:3306 check weight 1 maxconn 2000
server MySQL_2 10.1.161.26:3306 check weight 1 maxconn 2000
#使用keepalive檢測死鏈
option tcpka
啟動一下:
#在主節點創建haproxy容器
docker run -d -p 8888:8888 -p 3307:3306 -v /data/haproxy:/usr/local/etc/haproxy \
--name haproxy --privileged haproxy
測一下有沒有通:
http://10.1.161.28:8888/dbs_monitor
admin admin
連一下:
10.1.161.28:3306
root 123456
新建一個數據庫瞅瞅,發現都同步了,至此,丐版pxc集群完成。