部署服务器

一、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 永久开启,避免下次开机需要再次手动开启端口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值