我这里公有云部分使用华为云平台
一、私有网络管理
在公有云中完成虚拟私有云的创建,具体要求如下:
- 在上海一区域进行创建操作
- 创建一个名为intnetX的内部网络:IP地址为172.16.0.0/16
- 创建子网名称为intnetX-server:IP地址为172.16.1.0/24
- 创建子网名称为intnetX-mysql:IP地址为172.16.2.0/24
1.搜索VPC,找到虚拟私有云VPC
2.进入虚拟私有云,并创建虚拟私有云
3.选择区域和名称修改并创建子网
二、云实例管理
在华为云平台创建两台云实例
具体要求如下:
- 计费模式:按需计费
- 地域:上海一
- CPU架构:x86计算
- 镜像:CentOS 7.5 64位
- 系统盘:高IO 50G硬盘
- 公网带宽:按带宽计费,5Mbps
- 实例名称:ChinaSkill-node-1、ChinaSkill-node-2
- 登录方式:使用密码登录,密码自定义
1.搜索“云服务器ECS”并进入
2.购买弹性云服务器
3.选择对应配置
选择自定义购买,计费选择按需计费,区域选择上海一
选择x86计算,c7规格
选择公共镜像,使用CentOS7.5镜像
选择系统盘为高IO并设为50G,网络题目并没要求选哪个虚拟私有云网络,但我这里就先选个前面创的intnetX
选择按带宽计费,选择5Mbps带宽,修改服务器
后面设置密码自定义设置
注:由于经费有限,我这里自己创就不按照题目要求配置创了。
三、数据库管理
使用intnetX-mysql网络创建三台云服务器chinaskill-sql-1、chinaskill-sql-2、chinaskill-sql-3(系统使用CentOS7.9),使用提供的压缩文件mongodb-repo.tar.gz中的软件包源,在这三台云服务器上部署MongoDB数据库服务。
1.创建云服务器
和上面操作差不多,系统选为CentOS7.9,网络选择intnetX-mysql
2.准备文件
3.进入服务器
等服务器创建完成,用Shell工具进入就可以
4.上传文件
用ftp工具将文件传到每个数据库服务器中
5.进行部署
解压软件包:
tar -xzvf mongodb-repo.tar.gz
配置软件包源:
将解压后的软件包源文件移动到合适的位置,例如 /etc/yum.repos.d/
目录
mv mongodb.repo /etc/yum.repos.d/
配置YUM源的repo文件:
把自带的yum.repo文件放到其他文件夹备份,然后创建一个mongodb.repo文件
vi /etc/yum.repos.d/mongodb.repo #创建文件
[mongodb]
name=mongodb
baseurl=file:///etc/yum.repos.d/mongodb-repo
gpgcheck=0
enabled=1
然后清理并更新YUM缓存
yum clean all
yum makecache
安装MongoDB
yum install -y mongodb-org
启动并自启MongoDB服务:
systemctl start mongod
systemctl enable mongod
开放云服务器安全组端口27017
四、主从数据库
在 chinaskill-sql-1、chinaskill-sql-2 和 chinaskill-sql-3 云服务器中配置MongoDB一主二从数据库+副本集操作,chinaskill-sql-1节点为主节点,其余节点为从节点,配置MongoDB集群名称为cloud。
1.所有节点统一配置
修改配置文件:
vi /etc/mongod.conf
修改以下参数:
net:
port: 27017
bindIp: 0.0.0.0 #允许全部IP连接
replication:
replSetName: cloud # 修改集群名称
重启服务:
systemctl restart mongod
修改/etc/hosts文件,添加以下内容:
172.16.2.50 chinaskill-sql-1
172.16.2.249 chinaskill-sql-2
172.16.2.142 chinaskill-sql-3
#这些是云服务器的私有IP,不是弹性公网IP,如果用公网IP也行,但他们集群之间用公网IP访问没有私有IP方便
2.初始化副本集
进入Mongo Shell
mongo --host chinaskill-sql-1
mongo --host chinaskill-sql-2
mongo --host chinaskill-sql-3
#在各个节点执行
主节点初始化副本集:
rs.initiate({
_id: "cloud",
members: [
{ _id: 0, host: "chinaskill-sql-1:27017", priority: 2 },
{ _id: 1, host: "chinaskill-sql-2:27017", priority: 1 },
{ _id: 2, host: "chinaskill-sql-3:27017", priority: 1 }
]
})
3.主节点验证副本集状态
检查副本集配置:
rs.conf() // 确认所有节点已加入且priority值正确
检查主从角色
rs.status() // 输出中显示"chinaskill-sql-1"为PRIMARY
4.从节点验证
检查复制状态:
db.getMongo().setReadPref('secondaryPreferred') // 优先从从节点读取数据
rs.secondaryOk() // 确认自身状态为SECONDARY
3.数据同步测试
主节点插入数据:
use clouddb
db.testcollection.insertOne({ name: "test", value: 1 })
从节点查询数据:
db.testcollection.find()
不出意外的话从节点会返回一条类似下面这样的话:
{ "_id" : ObjectId("67c427f05c305232bd6fe37e"), "name" : "test", "value" : 1 }