一、ip addr 查不到ip地址
1.编辑文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
2.修改内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #修改成static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=af8e2d74-b58b-4038-8c4e-27073879f98d
DEVICE=ens33
ONBOOT=yes #修改成yes
GATEWAY="192.168.10.2" #网关
IPADDR="192.168.10.54" #ip地址
#NETMASK=255.255.255.0
PREFIX=24
DNS1=8.8.8.8
DNS2=8.8.4.4
ZONE=
3.重启网卡服务
service network restart
二. Docker安装
Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1、通过 uname -r 命令查看你当前的内核版本
uname -r
2、 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3、 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4、 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、 安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
8、 启动并加入开机启动
systemctl start docker
systemctl enable docker
9、 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
三、阿里镜像加速
详细参考: https://cr.console.aliyun.com/cn-hangzhou/mirrors
实际输入代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://5r3q771q.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
四、安装JDK
JDK下载地址https://pan.baidu.com/s/15eH99Z_WymiIlZk_xquOLg
解压文件到 usr/local/java文件夹下
tar -zxvf jdk-8u211-linux-x64.tar.gz
编辑配置文件
vi /etc/profile
在文件最底部写入jdk配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使文件生效
source /etc/profile
查看jdk版本
java -version
五、docker安装mysql
下载MySQL5.7版本
docker pull mysql:5.7
等待下载完成、创建MySQL容器
docker create --name mysql1 -e MYSQL_ROOT_PASSWORD=2wsx@WSX -p 3306:3306 mysql:5.7
创建容器名称为mysql1,密码为2wsx@WSX
启动容器
docker start mysql1
进入容器
docker exec -it mysql1 bash
mysql主从复制
https://blog.csdn.net/legendaryhaha/article/details/103652618
六、配置Haproxy
原文链接(修正部分错误)https://blog.csdn.net/belonghuang157405/article/details/80883342
第一步 安装Haproxy:
在centos窗口中 执行如下命令,拉取haproxy镜像:
docker pull haproxy
第二步 创建Haproxy配置文件
由于拉取下来的haproxy镜像中并不包含haproxy配置文件。故首先在宿主机上centos窗口中 执行如下两条命令创建haproxy配置文件:
mkdir /home/soft/haproxy
vi /home/soft/haproxy/haproxy.cfg
注:读者并非一定要指定在/home/soft/haproxy目录下,可自行选择,该目录将用于映射与docker容器中使用。
按 i 键,进入编辑模式,并将下方haproxy配置内容复制到haproxy.cfg中,读者可根据自身的环境进行修改,内容如下:
global
#工作目录
chroot /usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
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
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
stats auth admin:abc123456
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
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 172.18.0.2:3306 check weight 1 maxconn 2000
server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000
server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000
server MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
注:bind 0.0.0.0:3306 | 不限定访问ip。
option mysql-check user haproxy | 用于心跳的mysql用户,请在mysql集群数据库进行创建该用户haproxy,读者可自己配置该用户名。在此处我们按照约定俗成定为haproxy。
server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 | 172.18.0.2(容器的ip):3306(容器的端口),check(心跳检测),weight 1(权重,只有当算法为static-rr才生效),maxconn 2000(最大连接数)
粘贴内容后,按 Esc 键,并输入 :wq ,退出并保存文件。
在这还需用做一步的是在mysql窗口中,创建mysql用户,运行如下命令:
create user 'haproxy'@'%' identified by '';
也可以用图形化工具创建该用户
第三步 创建Haproxy容器,并运行Haproxy中间件
在centos窗口中,执行如下命令:
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name haproxy1 --privileged --net=default haproxy
创建Haproxy容器完成后,进入容器
docker exec -it haproxy1 bash
执行如下命令启动Haproxy:
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
第四步 访问Haproxy监控界面
在浏览器访问 http://宿主机ip:4001/dbs , 输入haproxy.cfg中配置的账号密码。
如图所示:
登陆后,可以查看数据集群的运行情况,如图所示:
第五步 试验是否监控成功
挂起其中一个容器,进行测试,在宿主机centos窗口中输入如下命令:
docker stop node2
再次刷新haproxy刷新界面,即可查看到结果,发现对应node2的MySQL_2变红
验证完成后,在centos窗口中执行如下命令,重新启动node2:
docker start node2
再次刷新haproxy监控界面即可看到恢复正常。
第五步 使用Haproxy中间件连接数据库
利用MySQL图形界面建立haproxy数据库连接
注:4002端口,就是第三步操作中 -p 4002:3306 命令,将docker容器的3306端口映射给宿主机的4002端口,读者可自行替换。
接下来创建好haproxy数据连接,就可以在该haproxy数据库连接中进行数据库操作,haproxy会帮你将操作按照haproxy配置的策略分发到各个容器(node1,node2,node3,node4)的数据库中,从而实现负载均衡。
七、docker部署mysql主从复制
原文链接https://my.oschina.net/u/3773384/blog/1810111
使用Docker拉取MySQL镜像
docker pull mysql:5.7
运行主容器
docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
–name 为容器指定名称,这里是master
-p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
-e 设置环境变量,这里是指定root账号的密码为root
-d 后台运行容器,并返回容器ID
mysql:5.7.13 指定运行的mysql版本
开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
–permanent 永久开启,避免下次开机需要再次手动开启端口
创建主容器的复制账号
使用Navicat友好的图像化界面执行SQL
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';
创建配置文件目录
目录结构如下
/usr/local/mysql/master
/usr/local/mysql/slave1
/usr/local/mysql/slave2
拷贝一份MySQL配置文件
docker cp master:/etc/mysql/my.cnf /usr/local/mysql/master/my.cnf #没有用 自己建
修改my.cnf,在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin
server-id=1
log-bin=mysql-bin 使用binary logging,mysql-bin是log文件名的前缀
server-id=1 唯一服务器ID,非0整数,不能和其他服务器的server-id重复
将修改后的文件覆盖Docker中MySQL中的配置文件
docker cp /usr/local/mysql/master/my.cnf master:/etc/mysql/my.cnf
重启 mysql 的docker , 让配置生效
docker restart master
启动后,重新测试连接,连接成功表示主容器配置成功
运行MySQL从容器
首先运行从容器
docker run --name slave1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
与主容器相似,拷贝配置文件至slave1目录修改后覆盖回Docker中
log-bin=mysql-bin
server-id=2
别忘记,重启slave1容器,使配置生效
docker restart slave1
配置主从复制
使用Navicat连接slave1后新建查询,执行以下SQL
CHANGE MASTER TO
MASTER_HOST='ip',
MASTER_PORT=3306,
MASTER_USER='backup',
MASTER_PASSWORD='backup';
START SLAVE;
MASTER_HOST 填Navicat连接配置中的ip应该就可以
MASTER_PORT 主容器的端口
MASTER_USER 同步账号的用户名
MASTER_PASSWORD 同步账号的密码
检查是否配置成功
show slave status;
Slave_IO_State 如果是Waiting for master to send event,那么就成功一半了,如果是Connecting to master,基本就是配置失败了,建议重新检查下配置,具体失败的原因可以查看日志追踪
docker logs slave -f
接着上文,我们说成功一半,并没有说成功了,那么另一半在于Slave_IO_Running与Slave_SQL_Running
如果都是Yes,那么恭喜你,可以测试主从复制的效果了,如果有一个不是Yes,一半是重启从容器后,事务回滚引起的,那么给出解决方法如下
stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;
完成 进行测试
写在后面
rz命令不支持:
执行
yum -y install lrzsz
解压文件tar.gz格式
tar -zxvf
压缩文件tar.gz格式
tar -zcvf
解压文件tar.gz格式
unzip
压缩文件tar.gz格式
zip -r
获取docker容器的详细信息
docker inspect
关闭防火墙
systemctl stop firewalld
防火墙永久开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
–permanent 永久开启,避免下次开机需要再次手动开启端口