一.使用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集群这个库是虚拟表数据,从两个实体表中加载数据汇总到虚拟表中

Centos在NAT模式下的设置相关推荐

  1. CentOs虚拟机NAT模式下静态IP的配置

    NAT连接方式除非手动配置,一般默认为动态ip,在一些场景下,动态IP随机指定显然是不合适的.NAT模式下:网关的配置(manual方式下)要和虚拟网络配置器保持一致. 方法 1: 首先修改:/etc ...

  2. 虚拟机中的centos在nat模式下连不上外网

    这两天需要配置ftp服务器,可是虚拟机在nat模式下死活连不上外网,主机能够通过该ssh与虚拟机进行连接,虚拟机也能ping同一网段主机的IP地址,但就是ping不通外网, 开始我是这样配置的: 主机 ...

  3. NAT 模式下网关设置

    @NATTOC 1.能够ping通内网,且网关在配置文件中的网关和DNS都设置是对的,但还是无法ping通外网. 原因是VMware的NAT网关最后一个是1, 如图: 有2种解决办法: 第一种:点开w ...

  4. CentOS命令行模式下设置屏幕常亮----没有达到预期效果

    CentOS命令行模式下设置屏幕常亮 最近在一个项目中使用了CentOS作为客户端(本着资源合理使用的原则,通常我们环境中CentOS都不安装图形界面的,就是直接命令行操作).因为是做7天*24小时测 ...

  5. centos8调整分辨率_Hyper-V 设置 CentOS 8 文本模式下分辨率

    CentOS 8 文本模式下分辨率的修改,可以参考我的另一篇文章<CentOS 7 文本模式下修改分辨率>.不过,在 Hyper-V 下发现似乎没有效果,还需要添加如下一行: video= ...

  6. 教你一招在VMware的NAT模式下,两台电脑如何互相访问对方的虚拟机

    目录 一. 准备工作 二. 开始 2.1 设置NAT模式 2.2 进行NAT模式设置 2.3 XShell访问对方虚拟机 一. 准备工作 需要两台电脑(我准备了两台win10) VMware虚拟机:[ ...

  7. virtualBox使用nat模式下ssh连接

    virtualBox本地虚拟机通过ssh连接一般可通过桥接模式和Nat模式 桥接模式下,共享本地主机网卡,在同一个局域网之下,直接获取Ip地址就可以进行连接了. Nat模式下,获取的Ip与本地主机不是 ...

  8. vmware中NAT模式下,虚拟机与主机能ping通 为什么虚拟机不能上网

    vmware中NAT模式下,虚拟机与主机能ping通 为什么虚拟机不能上网? 方案一: 1.把虚拟机的网络连接设置为桥接或NAT都可以的 2.把虚拟机和主机设置为同一网段 主机 网络邻居属性 3.双击 ...

  9. VMware在NAT模式下配置静态IP

    1. 虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连 ...

最新文章

  1. 政府要尽快对应用商店出台管理办法
  2. Android Studio下载及安装3.0版本
  3. 熊猫分发_熊猫重命名列和索引
  4. 3.调整web框架行为 3.1配置路径匹配形式
  5. 【BZOJ】1270 [BeijingWc2008]雷涛的小猫
  6. vagrant box磁盘扩容 亲测有效
  7. PMBOK(第六版) PMP笔记——《八》第八章(项目质量管理)
  8. H264/AVC-NALU解析
  9. 51开发板的功能及简单使用
  10. LOAP引擎:clickhouse03:文件的导入导出方式
  11. C语言基础常见计算题
  12. 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
  13. unity ECS简介
  14. 如何进行用户行为分析
  15. Word2vec 计算两个文本之间相似度
  16. 有测试智商的软件不,测试智商的软件有哪些
  17. python分析红楼梦中人物形象_红楼梦中的人物形象及其性格特点
  18. Studing Git
  19. iOS Instruments工具使用
  20. 【 2021 MathorCup杯大数据挑战赛 A题 二手车估价】初赛复赛总结、方案代码及论文

热门文章

  1. IDEA超实用方法类注释模板大全
  2. 数据库编程需要下载什么软件
  3. 安卓基础知识(一) 服务(Service)
  4. Echarts世界地图的国家名称中文化
  5. 实用工具分享——PDF阅读
  6. 如何重置计算机服务到默认状态,电脑慢到让人抓狂?教你如何将Windows10还原到出厂设置...
  7. 基于Netty的聊天系统(三)协议定制----消息篇
  8. 欧拉角和四元数相互转换
  9. 操作系统实验——进程调度 实验报告
  10. 【SSO】单点登录系统实现