IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Centos在NAT模式下的设置 -> 正文阅读

[系统运维]Centos在NAT模式下的设置

一.使用NAT连接

创建虚拟机之后,我们要设置一下虚拟机网卡的工作模式。 最推荐的是桥接模式,这种模式下,虚拟主机的网卡有独立的IP地址,跟本地局域网里面的真实主机差不多。但是缺点也很明显,就是不能用在校园网当中。因为校园网基本都采用了局域网设备隔离技术,你这个虚拟出来的主机跟本地Windows电脑相互ping不通,所以你在虚拟机上安装各种程序,在Windows 上一个都调用不了。还有就是有些人经常更换网络环境,白天用公司的网络,晚上用家庭网络,这就导致电脑的局域网IP经常切换,Linux的IP地址也经常变化。环境-变化, 你就得修改程序代码,才能通过新的IP地址访问到Linux系统的程序,确实很麻烦。

这里我建议大家选择NAT网络模式,虽然不如桥接网络功能强大,但是却能胜任校园网和.上班族的需要。点击虚拟机上的设置按钮。
设置如下:
在这里插入图片描述

1.1 安装Centos镜像

在这里插入图片描述
在这里插入图片描述

1.2 ssh进行远程连接

在这里插入图片描述
5022端口将会映射到linux的22端口。

二、Docker

2.1 防火墙关闭

1.查看防火墙状态

systemctl status firewalld

2、直接设置永久关闭防火墙

systemctl disable firewalld #永久关闭,即设置开机的时候不自动启动

3.关闭 selinux:

修改配置文件(永久关闭selinux可以使用vi命令打开/etc/sysconfig/selinux 文件将SELINUX=disabled)

4、重启linux

reboot

2.2 更新yum程序

yum命令是CentOS自带的软件包管理器,我们安装Docker之前,最好能先更新一下yum命令, 然后等上十分钟左右与, yum就更新好了。

yum update -y

2.3、安装Docker

执行安装命令, Docker就自动安装好了。

yum install docker -y

2.4 管理docker

启动和关闭Docker服务,可以通过下面的命令完成。办Linux系统,别忘了要运行Docker服务,切记!

service docker start
service docker stop

查看Docker中的镜像列表,可以执行下面的命令。

docker images

想要删除某个镜像可以用下面的命令。

docker rmi 镜像名字

三、部署MySQL集群

使用的数据库是MySQL 8.0.23版本,所以我们需要往Docker中导入MySQL镜像,然后用命令就能创建出四个MySQL节点了。

3.1、导入MySQL镜像

找到MySQL.tar.gz 镜像文件,然后把这个文件上传到Linux系统,执行命令导入MySQL镜像。

docker load < MySQL.tar.gz

3.2、设置虚拟机端口转发

因为四个MySQL容器的端口都是3306,所以我们要把这四个3306端口,映射到Linux系统的不同端口上(12001-12005) ,然后还要把Linux的这些个端映射到Windows.上面(12001~12005) ,我们才能用Navicat连接到MySQL容器。(前四个做集群处理,第五个是分布式事务处理)
在这里插入图片描述
设置好端口转发,是立即生效的,你不需要重启虚拟机和CentOS系统。

3.3 创建五个MySQL节点

为了给Docker中的容器分配固定的Docker内网IP地址,而且还跟其他现存的Docker容器IP不冲突,所以我们新创建一个Docker内网的网段。网络名字叫做mynet,网段是172.18.0.X, 以后我们创建的容器都分配这个网段的IP。
需要注意,172.18.0.1是网关的IP, 我们不能用。

docker network create -- subnet=172.18.0.0/18 mynet

docker run命令是创建容器的,配合上相应的参数, MySQL容器就能创建出来了。

docker run -it -d --name mysql_1 -p 12001:3306 \
--net mynet --ip 172.18.0.2 \
-m 400m -v /root/mysql_1/data:/var/lib/mysql \
-v /root/mysql_1/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai --privileged=true \
mysql:8.0.23 \
--lower_case_table_names=1

执行后等上十几秒,再执行下一段

docker run -it -d --name mysql_2 -p 12002:3306 \
--net mynet --ip 172.18.0.3 \
-m 400m -v /root/mysql_2/data:/var/lib/mysql \
-v /root/mysql_2/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai --privileged=true \
mysql:8.0.23 \
--lower_case_table_names=1
docker run -it -d --name mysql_3 -p 12003:3306 \
--net mynet --ip 172.18.0.4 \
-m 400m -v /root/mysql_3/data:/var/lib/mysql \
-v /root/mysql_3/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai --privileged=true \
mysql:8.0.23 \
--lower_case_table_names=1
docker run -it -d --name mysql_4 -p 12004:3306 \
--net mynet --ip 172.18.0.5 \
-m 400m -v /root/mysql_4/data:/var/lib/mysql \
-v /root/mysql_4/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai --privileged=true \
mysql:8.0.23 \
--lower_case_table_names=1

运行docker ps -a命令看一下各个MySQL 节点的运行状态,如果是Exited状态, 说明该节点创建失败。

对于创建失败的MySQL节点,你运行docker rm 容器名字这个命令,把该MySQL删除,然后检查创建容器的命令是不是有错误,再重新创建该MySQL容器。

我们要创建的第五个MySQL节点是给事务中间件用的,并不存储业务数据,所以并不算MySQL集群中的节点。

docker run -it -d --name mysql_5 -p 12005:3306 \
--net mynet --ip 172.18.0.6 \
-m 300m -v /root/mysql_5/data:/var/lib/mysql \
-v /root/mysql_5/config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai --privileged=true \
mysql:8.0.23 \
--lower_case_table_names=1

四、MySQL集群概念

4.1 数据的切分

MySQL单表数据超过两千万, CRUD性能就会急速下降,所以我们需要把同一张表的数据切分到不同的MySQL节点中。这需要引入MySQL中间件,其实就是个SQL路由器而已。这种集群中间件有很多,比如MyCat、ProxySQL、ShardingSphere等等。 因为MyCat弃管 了,所以我选择了ShardingSphere,功能不输给MyCat,而且还是Apache负责维护的,国内也有很多项目组在用这个产品,手册资料相对齐全,所以相对来说是个主流的中间件。
在这里插入图片描述
我们在MySQL .1和MySQL 2两个节点上分别创建订单表,然后在ShardingSphere做好设置。 如果INSERT语句主键_值对2求模余0,这个INSERT语句就路由给MySQL _1节点:如果余数是1, INSERT语句就被路由给MySQL_2执行。

五、配置ShardingSphere

ShardingSphere是开源免费的数据库集群中间件,自带了各种切分数据的算法和雪花主键生成算法,甚至我们自己也可以写代码订制新的算法,相对来说比MyCat’展性更强。更多介绍,大家可以去官网自己查阅。

我这里使用的是ShardingSphere 5.0版本,属于最新的版本。5.0版本的配置文件和4.0版本有很大的区别,所以大家百度的时候尽量看清楚ShardingSphere的版本号,目前百度上大多数帖子讲ShardingSphere配置,都是基于4.0版本的。

5.1 设置端口转发

ShardingSphere默认使用3307端口,稍后我会把容器的3307端口映射到Linux的3307端口上,现在我们要把Linux的3307端口映射到Windows的3307端口上。
在这里插入图片描述

5.2导入JDK镜像

因为ShardingSphere是基于Java技术的中间件,所以我们需要先导入JDK镜像,然后创建容器,再放入
ShardingSphere程序。将jdk. tar.gz这个镜像文件上传到Linux系统(root目录下)。

docker load < JDK.tar.gz

5.3 创建容器

我们导入的JDK镜像里面包含的JDK版本是15.0.2的,然后我们用这个镜像创建Java容器。

docker run -it -d --name ss -p 3307:3307 \
--net mynet --ip 172.18.0.7 \
-m 300m -v /root/ss:/root/ss \
-e TZ=Asia/Shanghai --privileged=true \
jdk bash

5.4.运行ShardingSphere

CentOS系统的/root/ss 目录(即docker安装后的jdk映射目录下)是让我们放入ShardingSphere程序的,所以你将ShardingSphere. zip文件,上传到该目录之下。接下来我们要解压缩ZIP文件,那就需要安装UNZIP命令。

yum install unzip -y

先解压缩ZIP文件,然后进入到bin目录,给bin目录中的脚本文件赋权限。
在这里插入图片描述

# 进入文件目录
cd ss  或  cd /root/ss

#解压缩文件
unzip ShardingSphere.zip

#进入bin目录
cd ShardingSphere/bin

#给脚本文件赋权限(目录所有文件都给 777最高权限)
chmod -R 777 ./*

#进入容器
docker exec -it ss bash

#进入bin目录
cd /root/ss/ShardingSphere/bin

#启动ShardingSphere
./start.sh

# 退出容器
exit

在这里插入图片描述

等待10秒钟,然后进入到ShardingSphere的logs目录,看一下stdout . log文件的内容。如果只有这些警告信息,说明ShardingSphere启动成功了。(此时navict去连接3307端口的mysql)
在这里插入图片描述
此时ShardingSphere的虚拟库和虚拟表如下:
在这里插入图片描述

等你重新启动虚拟机的时候,要把ss容器启动,然后进入到容器运行这个start. sh脚本才可以。不是只把ss容器运行就可以了,切记! ! !

6、逻辑库的划分

6.1 分库

我们的项目划分出十几个微服务模块,模块之间为了彻底解耦,连逻辑库都是各用各的。如果每个MySQL分片都对应一个逻辑库,那么至少需要十几个分片,每个分片最少也得有6个MySQL节点。这样算下来,我们一共得需要超过60个MySQL节点,你觉得你的电脑能运行起来吗?所以我们必须现实一点,在四个MySQL分片上创建不同的逻辑库,给不同的微服务模块。
在这里插入图片描述

6.2管理逻辑库

虽然我们只有四个分片,但是每个分片上都有几个逻辑库,因此我们在ShardingSphere. 上就要创建JDBC连接,去连接这些逻辑库。你可以打开ShardingSphere的 config/config- sharding. yaml文件,阅读这些配置信息。

此时我配置的情况如下:
在mysql集群库中有tb_customer表,当表中的id除以2余0时,数据存放在mysql_1的库中,余1时,存mysql_2中
在这里插入图片描述
在这里插入图片描述
根据切分规则,将mysql语句路由给对应的mysql节点执行。mysql集群这个库是虚拟表数据,从两个实体表中加载数据汇总到虚拟表中
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:49:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:37:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计