热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux服务器管理——高可用电商项目系统部署方案

linux服务器管理——高可用电商项目系统部署方案高可用电商项目系统部署方案报告前言[摘要][关键词]环境拓扑图完整拓扑图准备工作必要安装和操作克隆搭建LVS的DR模式简单拓扑配置


linux服务器管理——高可用电商项目系统部署方案

  • 高可用电商项目系统部署方案报告
    • 前言
      • [摘 要]
      • [关键词]
    • 环境
    • 拓扑图
      • 完整拓扑图
    • 准备工作
      • 必要安装和操作
      • 克隆
    • 搭建LVS的DR模式
      • 简单拓扑
      • 配置IP
        • router
          • 查看网卡的uuid以及mac地址
          • 配置静态IP
          • 测试连通
          • router启动路由转发
          • 查看路由表
        • lvs1
        • lvs2
        • RS1的IP配置
        • RS2的IP配置
    • 配置keepalived
      • lvs1
        • 修改keepalived.conf文件
        • 启动keepalived并设置自启动
      • lvs2
    • 统一配置RS
      • 安装gcc
      • 安装nginx
      • 设置nginx启动与自启动
      • 关于nginx的基础知识
      • 安装net-tools
      • RS1编辑dr模式脚本
        • 运行并设置脚本自启动
      • RS2编辑dr模式脚本
      • 查看结果
        • rs
        • lvs
    • MYSQL的双主互从
      • 准备工作
        • 卸载mariadb
        • 安装mysql
        • 开启mysql并设置自启动
          • 成功截图
      • mysql配置
        • 查看临时密码
        • 登录mysql
        • 修改mysql的密码
          • 重设密码为最低级标准
          • 重设密码
        • 1.重启net服务
        • 2.确保mysql端口启用
        • 3.配置my.cnf
          • rs1的配置
          • rs2的配置
        • 4.若你的机器是克隆的则要修改mysql的server-uuid
          • 查询server-uuid
          • 利用mysql生成uuid
          • 查看并修改你当前的uuid
          • 重启mysql服务
        • 5.添加一个测试用户
        • 6.查看主节点状态
        • 7.配置主从
        • 8.启动并查看slave
          • 若出现,说明未启动
          • 启动成功
        • 9.测试
          • 在RS1上
          • 在RS2上
    • MYSQL配置双主双从
      • 更新拓扑图
      • 配置新增的两台realserver
        • rs3
          • 配置ens33网卡静态ip
        • rs4
          • 配置ens33网卡静态ip
          • 配置uuid和my.cnf
          • 配置slave
      • 测试
        • 原始数据库
        • 删除记录
    • 使用GlusterFS搭建分布式文件系统
      • 官方地址:
      • 安装
      • 启动服务
      • 建立信任池
      • 创建复制卷
        • 设置复制卷目录
        • 使用命令创建复制卷
    • 错误及解决
      • 错误1
        • 解决
      • 错误2
        • 解决
      • 错误3
        • 解决
      • 错误4
        • 解决
          • 从节点还原数据库,锁定主节点
          • 从结点创建数据库
          • 解锁
    • 参考文献


高可用电商项目系统部署方案报告


前言

liunx服务器管理
B站地址:https://www.bilibili.com/video/BV1KY4y1z73K?p=4&spm_id_from=pageDriver
视频中肯定是有一些问题的,敬请指正,谢谢


[摘 要]

为某电商项目搭建高可用的部署方案,其中使用到lvs的dr模式负载均衡为主体,运用mysql集群和GlusterFS集群结合keepalived保证商品图片和视频的文件服务和防止意外发生,满足日浏览量200万和成交10万单的业务量


[关键词]

lvs负载均衡,mysql双主双从,高可用企业电商部署方案,GlusterFS分布式文件系统集群,keepalived


环境


环境版本
centos7.9
nginx1.2.6
GlusterFS6.0+
Mysql5.7

(表一为环境版本对应表)


拓扑图


完整拓扑图

在这里插入图片描述

(图一为详细系统拓扑图)


机器ip地址VIPGW
router210.202.135.1,10.0.0.200192.168.112.1
lvs110.0.0.1010.0.0.10010.0.0.200
lvs210.0.0.1110.0.0.10010.0.0.200
rs110.0.0.1510.0.0.200
rs210.0.0.1610.0.0.200
rs310.0.0.1710.0.0.200
rs410.0.0.1810.0.0.200

(表二为详细系统拓扑对应表)


准备工作


必要安装和操作

我们需要在centos7上安装ipvsadm和keepalived,并且关闭防火墙

yum -y install ipvsadm keepalived
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

克隆

在这里插入图片描述

(图二为centos7克隆位置图)

在这里插入图片描述

(图三为centos7克隆操作图)
在这里插入图片描述

(图四为centos7克隆结果图)


搭建LVS的DR模式


简单拓扑

一开始搭建简单的拓扑结构,后续增加realserver3和realserver4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFlm6B6L-1654045667047)(D:\B站直播录制\linux\搭建\imgs\image-20220531055609836.png)]

(图五为初始搭建的简单拓扑图)


配置IP


router


查看网卡的uuid以及mac地址

cd /etc/sysconfig/network-scripts
nmcli con show
//网卡的uuid以及mac地址
24fdc2d7-3fc5-480f-b380-074fed3b5e17
00:0c:29:57:ee:c7
1cd7f152-79ee-3565-bab4-7a4a68e234f8
//重启网络服务
service network restart

在这里插入图片描述

(图六为网卡的uuid以及mac地址对应图)


配置静态IP

vim ifcfg-ens33
vim ifcfg-ens37

//ens33配置详情
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.200
NETMASK=255.0.0.0
GATEWAY=192.168.112.1
DNS1=114.114.114.114//ens37配置详情
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=ens37
UUID=1cd7f152-79ee-3565-bab4-7a4a68e234f8
DEVICE=ens37
ONBOOT=yesIPADDR=210.202.135.1
GATEWAY=192.168.112.1
NETMASK=255.255.255.0
DNS1=114.114.114.114

测试连通

在这里插入图片描述

(图八为测试router的连通图)


router启动路由转发

cd /proc/sys/net/ipv4
echo 1 >> ip_forward

在这里插入图片描述

(图九为router启动路由转发结果图)


查看路由表

route -n

在这里插入图片描述

(图十为路由表显示图)


lvs1

ens33:c31f05a0-503b-3522-8fe0-20d0ed06cac1
ens37:24fdc2d7-3fc5-480f-b380-074fed3b5e17TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.10
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

lvs2

ens33:64d22abf-b543-3d0f-b208-98199a41c76c
ens33:24fdc2d7-3fc5-480f-b380-074fed3b5e17TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.11
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

RS1的IP配置

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.15
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

RS2的IP配置

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.16
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

配置keepalived


lvs1


修改keepalived.conf文件

cd /etc/keepalived/
vim keepalived.conf

! Configuration File for keepalivedglobal_defs { router_id LVS_1
}
vrrp_instance VI_1 {state MASTER #备用机为BACKUPinterface ens37 #绑定VIP的网卡为ens33,根据自己服务器设置virtual_router_id 51priority 100 #权重,主机应该更大advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.100 # vip01}
}vrrp_instance VI_2 {state BACKUPinterface ens37virtual_router_id 55priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.101 # vip02}
}virtual_server 10.0.0.100 80 {delay_loop 6 #每过6秒查询node的状态lb_algo rr #lvs负载均衡算法,rr为轮询lb_kind DR #DR模式protocol TCP #用tcp协议检查node状态#下面是配置被负载均衡的真实服务器nginxreal_server 10.0.0.15 80 {weight 2 #权重TCP_CHECK {connect_port 80connect_timeout 1nb_get_retry 2delay_before_retry 1}}
}virtual_server 10.0.0.101 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 10.0.0.16 80 {weight 2TCP_CHECK {connect_port 80connect_timeout 1nb_get_retry 2delay_before_retry 1}}
}

启动keepalived并设置自启动

systemctl start keepalived.service
systemctl enable keepalived.service

在这里插入图片描述

(图十一为设置启动keepalived并设置自启动结果图)


lvs2

//修改keepalived.conf文件
cd /etc/keepalived/
vim keepalived.conf//conf配置详情
! Configuration File for keepalivedglobal_defs { router_id LVS_2
} vrrp_instance VI_1 {state BACKUPinterface ens37virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.100 # vip01}
}vrrp_instance VI_2 {state MASTER interface ens37virtual_router_id 55priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.0.0.101 # vip02}
}virtual_server 10.0.0.100 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 10.0.0.15 80 {weight 2TCP_CHECK {connect_port 80connect_timeout 1nb_get_retry 2delay_before_retry 1}}
}virtual_server 10.0.0.101 80 {delay_loop 6lb_algo rrlb_kind DRprotocol TCPreal_server 10.0.0.16 80 {weight 2TCP_CHECK {connect_port 80connect_timeout 1nb_get_retry 2delay_before_retry 1}}
}//启动keepalived并设置自启动
systemctl start keepalived.service
systemctl enable keepalived.service

统一配置RS


安装gcc

yum -y install gcc

安装nginx

//更新yum源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
//安装
yum -y install nginx

设置nginx启动与自启动

systemctl start nginx.service
systemctl enable nginx.service

关于nginx的基础知识

nginx部署目录
/usr/share/nginx/html
nginx配置目录
/etc/nginx(default.conf,conf.d)

安装net-tools

yum install net-tools

RS1编辑dr模式脚本

vim /usr/local/sbin/lvs_dr_rs.sh//脚本详情
#/bin/bash
vip01=10.0.0.15
vip02=10.0.0.16
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip01 broadcast $vip01 netmask 255.255.255.255 up
route add -host $vip01 lo:0ifconfig lo:1 $vip02 broadcast $vip02 netmask 255.255.255.255 up
route add -host $vip02 lo:1
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#限制arp响应请求
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
#限制arp发送请求
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

运行并设置脚本自启动

//运行
sh lvs_dr_rs.sh
//自启动
cd /etc/rc.d/
vim rc.local
//在rc.local中添加
sh /usr/local/sbin/lvs_dr_rs.sh
//设置rc.local能被操作
chmod a=rwx rc.local

在这里插入图片描述

(图十二为在rc.local配置图)

在这里插入图片描述

(图十三为rc.local权限图)


RS2编辑dr模式脚本

vim /usr/local/sbin/lvs_dr_rs.sh#/bin/bash
vip01=10.0.0.15
vip02=10.0.0.16
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip01 broadcast $vip01 netmask 255.255.255.255 up
route add -host $vip01 lo:0ifconfig lo:1 $vip02 broadcast $vip02 netmask 255.255.255.255 up
route add -host $vip02 lo:1
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#限制arp响应请求
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
#限制arp发送请求
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce//运行
sh lvs_dr_rs.sh
//自启动
cd /etc/rc.d/
vim rc.local
sh /usr/local/sbin/lvs_dr_rs.sh
chmod a=rwx rc.local

查看结果

ip addr

rs

在这里插入图片描述

(图十四为realserver的ip详情图)


lvs

在这里插入图片描述

(图十五为lvs的ip详情图)

若见到如图所示,则证明配置成功生效


MYSQL的双主互从


准备工作


卸载mariadb

//查询mariadb的软件包
rpm -qa | grep -i mariadb
//彻底卸载mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
//查找mysql的包
rpm -qa | grep mysql

安装mysql

//安装wget
yum -y install wget
//获取mysql的镜像地址进行更新
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
//安装
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
//可能出现的错误1,请查看本文的错误模块

开启mysql并设置自启动

//开启mysql的服务
systemctl start mysqld.service
systemctl status mysqld.service

成功截图

在这里插入图片描述

(图十五为mysql服务运行图)


mysql配置


查看临时密码

grep "password" /var/log/mysqld.log
//我的临时密码: sFFdT>fp1>0I

登录mysql

mysql -u root -p

在这里插入图片描述

(图十六为mysql登录成功图)


修改mysql的密码


重设密码为最低级标准

//修改密码策略为0,=号后的数字越高安全等级越高最高是4
set global validate_password_policy=0;
//重设密码的默认长度
set global validate_password_length=1;

重设密码

set password for 'root'@'localhost'=password('123456');


### 配置双主互从

1.重启net服务

将ens33连接

在这里插入图片描述

(图十七为网络连接设置位置图)

service network restart

2.确保mysql端口启用

netstat -nltp

在这里插入图片描述

(图十八为确认mysql端口启用图)


3.配置my.cnf

vim /etc/my.cnf

rs1的配置

//增加的配置RS1
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidserver-id=100
log-bin=mysql-bin
log-slave-updates
binlog_format=ROW
binlog_row_image=FULL
expire_logs_days=7auto_increment_increment=1
auto_increment_offset=1//无需同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema#binlog-do-db=test

rs2的配置

//增加的配置RS2
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidserver-id=101
log-bin=mysql-bin
log-slave-updates
binlog_format=ROW
binlog_row_image=FULL
expire_logs_days=7auto_increment_increment=1
auto_increment_offset=2binlog-ignore-db=mysql
binlog-ignore-db=information_schema#binlog-do-db=test

4.若你的机器是克隆的则要修改mysql的server-uuid

若非克隆机则无需修改,若克隆不修改则出现错误3


查询server-uuid

进入你当前机器的mysql

show global variables like '%uuid';

利用mysql生成uuid

select uuid();

查看并修改你当前的uuid

cd /var/lib/mysql/
//查看auto.cnf
cat auto.cnf
vim auto.cnf

在这里插入图片描述

(图十九为auto.cnf中mysql的uuid设置图)


重启mysql服务

systemctl restart mysqld.service

5.添加一个测试用户

//先修改密码策略,请参看上方密码策略修改
//添加新用户
GRANT REPLICATION SLAVE, FILE, REPLICATION CLIENT ON *.* TO 'repluser'@'%' IDENTIFIED BY '123456';
//刷新策略
FLUSH PRIVILEGES;
//查看是否成功
use mysql;
select user from user;

在这里插入图片描述

(图二十为策略成功用户添加成功图)


6.查看主节点状态

show master status;

在这里插入图片描述

(图二十一为rs1的主节点状态图)

在这里插入图片描述

(图二十二为rs2的主节点状态图)


7.配置主从

rs1需要配置rs2的ip地址以及rs2的节点状态,rs2则相反

//rs1
change master to master_host='10.0.0.16',master_port=3306,
master_user='repluser',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1030;
//rs2
change master to master_host='10.0.0.15',master_port=3306,
master_user='repluser',master_password='123456',
master_log_file='mysql-bin.000004',master_log_pos=154;

8.启动并查看slave

//启动slave
start slave;
//设置同步(注意设置同步必须在启动之前或关闭后,再启动)
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
//查看slave状态
show slave status \G;

若出现,说明未启动

Slave_IO_Running: No
Slave_SQL_Running: No

在这里插入图片描述

(图二十三为slave未启动图)


启动成功

若启动成功后出现Slave_IO_Running,Slave_SQL_Running两者不同步则参看错误3

Slave_IO_Running: No
Slave_SQL_Running: Yes

正常启动示例

Slave_IO_State: Connecting to masterMaster_Host: 10.0.0.15Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 619Relay_Log_File: localhost-relay-bin.000001Relay_Log_Pos: 4Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: Yes

在这里插入图片描述

(图二十四为slave正在启动图)
在这里插入图片描述

(图二十五为slave启动成功图)


9.测试


在RS1上

去为数据创建一个数据库并添加一个数据表

show databases;
create database test;
create table `test`.`user`(`id` INT NOT NULL AUTO_INCREMENT ,`username` VARCHAR(20),PRIMARY KEY (`id`));
show tables;

在RS2上

若查询对应创建的数据库发现创建成功并有表说明数据同步成功

在这里插入图片描述

(图二十六为rs2数据同步成功结果图)


MYSQL配置双主双从


更新拓扑图

增加realserver3和realserver4并配置IP如上
在这里插入图片描述

(图二十七为更新后拓扑图)


配置新增的两台realserver


rs3


配置ens33网卡静态ip

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.17
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

rs4


配置ens33网卡静态ip

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=24fdc2d7-3fc5-480f-b380-074fed3b5e17
DEVICE=ens33
ONBOOT=yesIPADDR=10.0.0.18
NETMASK=255.0.0.0
GATEWAY=10.0.0.200
DNS1=114.114.114.114

配置uuid和my.cnf

参看上方双主互从的第四步


配置slave

设置与主数据库同步,在这里我们从拓扑图中可以看出rs3是rs1的从,rs4是rs2的从

先到主中停止slave

在rs3中设置rs1,rs4中设置rs2如下

//rs1
change master to master_host='10.0.0.16',master_port=3306,
master_user='repluser',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1030;
//rs2
change master to master_host='10.0.0.15',master_port=3306,
master_user='repluser',master_password='123456',
master_log_file='mysql-bin.000004',master_log_pos=154;

最后重启服务再执行启动slave,最后你应该看到四台机器的slave都状态都是成功同步的

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试


原始数据库

原始数据库中,rs1~rs4都具有如下图数据

在这里插入图片描述

(图二十八为原始数据库数据图)


删除记录

我们在rs1中对共有数据进行删除

delete from user where id = 5;

在这里插入图片描述

最后我们发现四台机器上都没有了数据表,表示双主双从数据同步成功!

在这里插入图片描述

(图二十九为测试双主双从示例成功图)


使用GlusterFS搭建分布式文件系统


官方地址:

https://www.gluster.org/


安装

分别在两台rs1和rs2上安装

yum install centos-release-gluster
yum install glusterfs-server

启动服务

分别在两台rs1和rs2上启动

systemctl start glusterd
systemctl enable glusterd
systemctl status glusterd

在这里插入图片描述

(图三十为GlusterFS服务启动成功图)


建立信任池

在这里只需要在rs1中进行操作即可

gluster peer probe 10.0.0.16
//查看信任池状态
gluster peer status

在这里插入图片描述

(图三十一为搭建信任池成功图)


创建复制卷


设置复制卷目录

rs1上是exp3,rs2上是exp4

mkdir -p /data/exp3
mkdir -p /data/exp4

使用命令创建复制卷

命名为repl-volume

gluster volume create repl-volume replica 2 transport tcp 10.0.0.15:/data/exp3 10.0.0.16:/data/exp4 force
//查看卷信息
gluster volume info repl-volume
//开启卷
gluster volume start repl-volume

在这里插入图片描述

(图三十二为创建复制卷成功图)
在这里插入图片描述

(图三十三为复制卷信息图)

在这里插入图片描述

(图三十四为复制卷开启成功图)


错误及解决


错误1

mysql服务安装失败,公钥过期或未安装

在这里插入图片描述

(图三十五为错误一截图)


解决

重新去获取2022年的key

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
//重新安装mysql服务
yum -y install mysql-community-server

错误2

mysql缺失libncurses.so.5无法登录

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决

安装libncurses.so.5及其依赖

yum -y install libncurses.so.5
yum -y install libncurses*

错误3

由于mysql的connection id相同导致数据无法同步

在这里插入图片描述

(图三十六为错误一截图)


解决

先把当前的mysql的slave停止,然后设置同步,然后确定mysql的uuid以及my.cnf中的server-id与其他机器不同后,重启机器

//关闭slave
stop slave;
//设置同步(注意设置同步必须在启动之前或关闭后,再启动)
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
//重启
reboot

错误4

克隆导致的数据库本来就不同步,后续数据同步后导致数据缺失


解决


从节点还原数据库,锁定主节点

flush table with read lock;

从结点创建数据库

创建缺失的即可


解锁

unlock tables;

参考文献

《CENTOS 7系统管理与运维实战》,王亚飞、王刚 编著,清华大学出版社

keepalived+lvs+dr 主从模式和双主模式配置,神奇的路人A, https://blog.csdn.net/qq_44936079/article/details/121309053

GlusterFS分布式存储,李泽信,https://blog.csdn.net/qq_43704782/article/details/123721006?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-123721006-blog-109725764.pc_relevant_antiscanv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-123721006-blog-109725764.pc_relevant_antiscanv3


推荐阅读
author-avatar
你的美我chase
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有