Linux云计算 |【第四阶段】PROJECT2-DAY1

ops/2024/10/16 2:24:41/

综合项目内容:

部署数据库服务MySQL、部署共享存储NFS、配置网站服务、测试配置

 

一、项目拓扑结构

PROJECT1回顾:

PROJECT2-DAY1拓扑:

服务器IP及角色规划:

主机名

IP地址

角色

mysql11

192.168.4.11

MySQL数据库服务器

mysql22

192.168.4.22

MySQL数据库服务器

maxcale77

192.168.4.77

读写分离服务器

nfs30

192.168.4.30

共享存储服务器

web33

192.168.4.33

网站服务器

涉及技术点:

① 逻辑卷

② 数据库服务

③ MySQL主从同步

④ 数据读写分离

⑤ NFS共享存储

 

案例1:配置逻辑卷

因数据库服务器在未来数据量不断增大,需要为2台数据库服务器分别添加2块5G磁盘,且配置逻辑卷支持扩容;

具体配置如下:

  • ① 添加磁盘
  • ② 磁盘分区
  • ③ 创建PV、VG、LV
  • ④ 格式化LV(文件系统类型:xfs)

步骤1:磁盘分区

mysql11为例操作

① 给2台数据库服务器添加2块5G的磁盘

[root@mysql11 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    5G  0 disk
sdc               8:32   0    5G  0 disk

② 磁盘分区,每块磁盘分1个区即可

[root@mysql11 ~]# fdisk -l /dev/sdb     //检查磁盘分区大小
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节[root@mysql11 ~]# fdisk -l /dev/sdc     //检查磁盘分区大小
磁盘 /dev/sdc:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节[root@mysql11 ~]# fdisk /dev/sdb     //进行磁盘分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x8fa4682c 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。[root@mysql11 ~]# fdisk /dev/sdc     //进行磁盘分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x04a10884 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
将使用默认值 10485759
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

 ③ 查看分区情况

[root@mysql11 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    5G  0 disk
└─sdb1            8:17   0    5G  0 part
sdc               8:32   0    5G  0 disk
└─sdc1            8:33   0    5G  0 part
…

步骤2:创建LV逻辑卷

① 安装提供命令的软件(lvm2)

[root@mysql11 ~]# rpm -q lvm2 || yum -y install lvm2
lvm2-2.02.177-4.el7.x86_64

② 创建PV

[root@mysql11 ~]# pvcreate /dev/sdb1 /dev/sdc1Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.[root@mysql11 ~]# pvscanPV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]PV /dev/sdb1                      lvm2 [<5.00 GiB]PV /dev/sdc1                      lvm2 [<5.00 GiB]Total: 3 [28.99 GiB] / in use: 1 [<19.00 GiB] / in no VG: 2 [<10.00 GiB]

③ 创建VG

[root@mysql11 ~]# vgcreate vg0 /dev/sdb1 /dev/sdc1    //创建vg(名称vg0)Volume group "vg0" successfully created[root@mysql11 ~]# vgdisplay vg0--- Volume group ---VG Name               vg0System IDFormat                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               9.99 GiB      //总大小PE Size               4.00 MiB      //PE总个数Total PE              2558Alloc PE / Size       0 / 0Free  PE / Size       2558 / 9.99 GiBVG UUID               WAR13a-umgc-C5tX-yLXa-M3o2-N35N-FGq7b1

④ 创建LV

[root@mysql11 ~]# lvcreate -L 9.99G -n lv0 vg0    //创建LV名称为lv0大小9.99GRounding up size to full physical extent 9.99 GiBLogical volume "lv0" created.[root@mysql11 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    5G  0 disk
└─sdb1            8:17   0    5G  0 part└─vg0-lv0     253:2    0   10G  0 lvm
sdc               8:32   0    5G  0 disk
└─sdc1            8:33   0    5G  0 part└─vg0-lv0     253:2    0   10G  0 lvm
...[root@mysql11 ~]# lvdisplay /dev/vg0/lv0   //查看lv0信息--- Logical volume ---LV Path                /dev/vg0/lv0LV Name                lv0VG Name                vg0LV UUID                R4q7uX-K96d-9Nw2-9HPV-u0lb-FeDs-Qs8N0iLV Write Access        read/writeLV Creation host, time mysql11, 2021-06-22 10:32:19 +0800LV Status              available# open                 0LV Size                9.99 GiB    //总大小Current LE             2558Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2

⑤ 格式化逻辑卷

[root@mysql11 ~]# mkfs.xfs /dev/vg0/lv0     //格式化为xfs文件系统
meta-data=/dev/vg0/lv0           isize=512    agcount=4, agsize=654848 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2619392, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0[root@mysql11 ~]# blkid /dev/vg0/lv0    //查看文件系统类型
/dev/vg0/lv0: UUID="7974e828-747a-4945-8bf7-89c0c8a7416d" TYPE="xfs"

 

案例2:配置数据库服务器

具体操作如下:

① 安装MySQL软件

② 挂载LV分区

③ 启动服务

④ 初始化管理员密码并登录


步骤1:安装MySQL

mysql11为例

① 解压软件包(参考:/linux-soft/4/mysql-5.7.17.tar)

[root@mysql11 ~]# tar -xvf mysql-5.7.17.tar
./mysql-community-client-5.7.17-1.el7.x86_64.rpm
./mysql-community-common-5.7.17-1.el7.x86_64.rpm
./mysql-community-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
./mysql-community-server-5.7.17-1.el7.x86_64.rpm
./mysql-community-test-5.7.17-1.el7.x86_64.rpm

② 安装MySQL软件

[root@mysql11 ~]# yum -y install mysql-community-*
[root@mysql11 ~]# id mysql
uid=27(mysql) gid=27(mysql) 组=27(mysql)

步骤2:挂载LV设备,设置开机自动挂载

[root@mysql11 ~]# vim /etc/fstab
/dev/vg0/lv0 /var/lib/mysql xfs defaults 0 0    //将格式化后的逻辑卷给数据库目录
[root@mysql11 ~]# mount -a
[root@mysql11 ~]# mount | grep "/var/lib/mysql"
/dev/mapper/vg0-lv0 on /var/lib/mysql type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

步骤3:启动MySQL服务,并设置开机自启

[root@mysql11 ~]# systemctl start mysqld
[root@mysql11 ~]# ls /var/lib/mysql

[root@mysql11 ~]# systemctl enable mysqld
[root@mysql11 ~]# ss -nlptu | grep :3306
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=1948,fd=22))
[root@mysql11 ~]# df -h | grep "var/lib/mysql"
/dev/mapper/vg0-lv0       10G  166M  9.9G    2% /var/lib/mysql

步骤4:初始化数据库

① 获取随机密码并修改登录密码

[root@mysql11 ~]# grep 'password' /var/log/mysqld.log
2021-06-22T03:06:32.295716Z 1 [Note] A temporary password is generated for root@localhost: lfMRDGwDP5_E
[root@mysql11 ~]# mysqladmin -uroot -p'lfMRDGwDP5_E' password '123qqq...A'

② 新密码登录

[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye

 

案例3:配置主从同步

配置步骤如下:

1)配置主服务器

启用binlog日志、重启服务、repluser用户授权、查看binlog日志信息

2)配置从服务器

指定server_id、重启服务、指定主服务器信息、启动Slave进程、查看Slave状态信息


步骤1:配置主服务器

mysql11操作

① 修改配置文件,启用binlog日志

[root@mysql11 ~]# vim /etc/my.cnf
[mysqld]
server_id=11
log_bin=master11
…
[root@mysql11 ~]# systemctl restart mysqld
[root@mysql11 ~]# ls /var/lib/mysql/master11.*
/var/lib/mysql/master11.000001  /var/lib/mysql/master11.index

② 授予从服务器同步复制用户(repluser

mysql> grant replication slave on *.* to repluser@'%' identified by '123qqq...A';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master11.000001 |      441 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

步骤2:配置从服务器

mysql22操作

① 修改配置文件,指定本服务器的server_id

[root@mysql22 ~]# vim /etc/my.cnf
[mysqld]
server_id=22
[root@mysql22 ~]# systemctl restart mysqld

② 指定主服务器信息

[root@mysql22 ~]# mysql -uroot -p123qqq...A
mysql> change master to-> master_host='192.168.4.11',-> master_user='repluser',-> master_password='123qqq...A',-> master_log_file='master11.000001',-> master_log_pos=441;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

③ 启动Slave进程

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

④ 查看状态信息

mysql> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.4.11Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master11.000001Read_Master_Log_Pos: 441Relay_Log_File: mysql22-relay-bin.000002Relay_Log_Pos: 319Relay_Master_Log_File: master11.000001Slave_IO_Running: YesSlave_SQL_Running: Yes

扩展:查看状态信息

[root@mysql22 ~]# mysql -uroot -p123qqq...A -e "show slave status\G" | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.Slave_IO_Running: YesSlave_SQL_Running: Yes[root@mysql22 ~]# mysql -uroot -p123qqq...A -e "show slave status\G" | grep -i Master_host
mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 192.168.4.11

案例4:配置读写分离服务

maxscale77操作

配置步骤如下:

① 安装maxscale软件

② 修改配置文件

③ 配置数据库服务器,授权相关maxscale用户(监控用户、路由用户)

④ 启动服务

⑤ 查看服务状态

⑥ 查看监控信息

步骤1:配置读写分离服务

① 安装maxscale软件(参考:/linux-soft/4/ maxscale-2.1.2-1.rhel.7.x86_64.rpm)

[root@maxscale77 ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
警告:maxscale-2.1.2-1.rhel.7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 8167ee24: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:maxscale-2.1.2-1                 ################################# [100%]
[root@maxscale77 ~]# id maxscale
uid=997(maxscale) gid=995(maxscale) 组=995(maxscale)
[root@maxscale77 ~]# ls /etc/maxscale.cnf     //主配置文件
/etc/maxscale.cnf
[root@maxscale77 ~]# ls /var/log/maxscale/    //日志目录

② 修改配置文件

[root@maxscale77 ~]# vim /etc/maxscale.cnf[maxscale]    //服务线程数量
threads=auto[server1]     //第1台数据库服务器
type=server
address=192.168.4.11
port=3306
protocol=MySQLBackend[server2]     //第2台数据库服务器
type=server
address=192.168.4.22
port=3306
protocol=MySQLBackend[MySQL Monitor]   //指定监控数据库服务器server1和server2
type=monitor
module=mysqlmon
servers=server1,server2
user=mysqlmon      //监控用户
passwd=123qqq...A   //密码
monitor_interval=10000[Read-Write Service]    //定义读写分离服务
type=service
router=readwritesplit
servers=server1,server2
user=mysqlrouter     //路由用户
passwd=123qqq...A   //密码
max_slave_connections=100%[MaxAdmin Service]    //定义管理服务
type=service
router=cli[Read-Write Listener]    //定义读写分离服务端口
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006     //端口号[MaxAdmin Listener]    //定义管理服务端口
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=4016     //端口号

步骤2:配置主数据库服务器,授权maxscale相关用户

mysql11操作

[root@mysql11 ~]# mysql -uroot -p123qqq...A

① 创建监控用户(授予权限:replication slave、replication client,所有库所有表)

mysql> grant replication slave,replication client on *.* to maxscalemon@'%' identified by '123qqq...A';
Query OK, 0 rows affected, 1 warning (0.00 sec)

② 创建路由用户(授予权限:select,Mysql库的所有表)

mysql> grant select on mysql.* to maxscalerouter@'%' identified by '123qqq...A';
Query OK, 0 rows affected, 1 warning (0.00 sec)

③ 从服务器查看授权用户(mysql22操作)

[root@mysql22 ~]# mysql -uroot -p123qqq...A -e "select user,host from mysql.user where user like 'maxscale%'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------+------+
| user           | host |
+----------------+------+
| maxscalemon    | %    |
| maxscalerouter | %    |
+----------------+------+

步骤3:启动maxscale服务

① 启动服务

[root@maxscale77 ~]# systemctl start maxscale.service   //或maxscale -f /etc/maxscale.cnf

② 查看服务信息(进程和端口)

[root@maxscale77 ~]# ps -C maxscalePID TTY          TIME CMD11376 ?        00:00:00 maxscale
[root@maxscale77 ~]# ss -nlptu | grep maxscale
tcp    LISTEN     0      128      :::4006                 :::*                   users:(("maxscale",pid=11376,fd=11))
tcp    LISTEN     0      128      :::4016                 :::*                   users:(("maxscale",pid=11376,fd=12))

③ 在maxscale服务本机访问管理服务,查看监控信息

[root@maxscale77 ~]# maxadmin -uadmin -pmariadb -P4016   //默认管理用户admin,密码mariadb
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.4.11    |  3306 |           0 | Master, Running
server2            | 192.168.4.22    |  3306 |           0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale> exit

验证读写分离测试

# 在mysql11主服务器上创建用于连接数据库的用户

mysql> grant all on *.* to tom@'%' identified by 'NSD2021@tedu.cn';
Query OK, 0 rows affected, 1 warning (0.00 sec)

# 使用客户端192.168.2.5访问Maxscale服务器对主从数据库进行读写操作测试(端口4006)

[root@localhost ~]# mysql -utom -pNSD2021@tedu.cn -h192.168.2.17 -P4006mysql> select @@hostname;   //查询测试
+------------+
| @@hostname |
+------------+
| mysql22    |
+------------+
1 row in set (0.00 sec)mysql> create database testdb default charset utf8mb4;    //写入测试
Query OK, 1 row affected (0.00 sec)
mysql> create table testdb.testtable(id int primary key,name varchar(20));
Query OK, 0 rows affected (0.00 sec)
mysql> desc testdb.testtable;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)mysql> insert into testdb.testtable values(1,"testuser");
Query OK, 1 row affected (0.00 sec)
mysql> select * from testdb.testtable;
+----+----------+
| id | name     |
+----+----------+
|  1 | testuser |
+----+----------+
1 row in set (0.00 sec)

 # 登录mysql22从服务器mysql22查看是否同步内容(mysql22操作)

mysql> select * from testdb.testtable;
+----+----------+
| id | name     |
+----+----------+
|  1 | testuser |
+----+----------+
1 row in set (0.00 sec)

案例5:准备NFS服务存储磁盘

nfs30操作

具体配置如下:

① 添加磁盘(大小3G)

② 磁盘分区

③ 格式化(xfs文件系统)

④ 创建挂载目录(mkdir /sitedir)

⑤ 配置开机挂载(挂载磁盘)

⑥ 查看挂载信息


步骤1:磁盘分区

① 给NFS服务器主机添加1块3G的磁盘

[root@nfs30 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    3G  0 disk
…

② 磁盘分区,分1个区即可

[root@nfs30 ~]# fdisk -l /dev/sdb     //查看磁盘信息
磁盘 /dev/sdb:3221 MB, 3221225472 字节,6291456 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节[root@nfs30 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x5b74a26b 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-6291455,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-6291455,默认为 6291455):
将使用默认值 6291455
分区 1 已设置为 Linux 类型,大小设为 3 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。[root@nfs30 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0    3G  0 disk
└─sdb1            8:17   0    3G  0 part

③ 格式化

[root@nfs30 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=196544 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786176, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0[root@nfs30 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="1f05edf6-d5f7-4276-9b6e-3d8cd86b8d5f" TYPE="xfs"

步骤2:挂载磁盘

[root@nfs30 ~]# mkdir /sitedir    //创建挂载目录
[root@nfs30 ~]# vim /etc/fstab   //修改配置文件
/dev/sdb1 /sitedir xfs defaults 0 0
[root@nfs30 ~]# chmod o+w /sitedir/    //赋予写权限
[root@nfs30 ~]# mount -a     //加载文件中所有未加载的设备
[root@nfs30 ~]# mount | grep "/sitedir"   //查看加载信息
/dev/sdb1 on /sitedir type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

案例6:配置NFS服务

nfs30操作

具体配置如下:

① 安装软件(nfs-utils、rpcbind)

② 修改配置文件

③ 启动服务

④ 查看共享信息


步骤1:部署NFS服务

① 安装软件

[root@nfs30 ~]# yum -y install nfs-utils.x86_64 rpcbind
[root@nfs30 ~]# tail -3 /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin②

② 修改配置文件

[root@nfs30 ~]# vim /etc/exports
/sitedir *(rw)
[root@nfs30 ~]# exportfs -r      //加载配置

步骤2:启动nfs、rpcbind服务

① 启动服务,并设置开机自启

[root@nfs30 ~]# systemctl start rpcbind
[root@nfs30 ~]# systemctl start nfs
[root@nfs30 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs30 ~]# systemctl enable rpcbind

② 查看共享信息

[root@nfs30 ~]# showmount -e localhost
Export list for localhost:
/sitedir *

案例7:配置Tomcat网站服务

web33操作

具体配置如下:

① 安装软件(apache-tomcat-8.0.30.tar.gz)

② 挂载NFS共享存储

③ 启动服务

④ 查看共享信息


步骤1:安装运行环境及Tomcat软件

① 运行的JAVA环境软件

[root@web33 ~]# yum -y install java-1.8.0-openjdk     //安装JDK
[root@web33 ~]# yum -y install java-1.8.0-openjdk-devel

② 安装软件(参考:lnmp_soft.tar.gz)

[root@web33 ~]# cd lnmp_soft/
[root@web33 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz
[root@web33 lnmp_soft]# mv apache-tomcat-8.0.30 /usr/local/tomcat

③ 安装连接mysql服务软件

[root@web33 ~]# yum -y install mysql-connector-java.noarch
[root@web33 ~]# cp /usr/share/java/mysql-connector-java.jar /usr/local/tomcat/lib/

④ 删除默认的网页文件

[root@web33 ~]# rm -rf /usr/local/tomcat/webapps/ROOT/*

步骤2:挂载共享

① 安装提供showmount命令软件(nfs-utils)

[root@web33 ~]# yum -y install nfs-utils.x86_64

② 查看共享目录

[root@web33 ~]# showmount -e 192.168.4.30
Export list for 192.168.4.30:
/sitedir *

③ 挂载共享目录

[root@web33 ~]# vim /etc/fstab
192.168.4.30:/sitedir /usr/local/tomcat/webapps/ROOT nfs defaults 0 0
[root@web33 ~]# mount -a

④ 查看挂载

[root@web33 ~]# mount | grep "sitedir"
192.168.4.30:/sitedir on /usr/local/tomcat/webapps/ROOT type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.4.33,local_lock=none,addr=192.168.4.30)
[root@web33 ~]# systemctl enable remote-fs.target  //设置远程加载服务开机运行

步骤3:启动Tomcat服务

① 启动服务,并设置服务开机运行

[root@web33 ~]# /usr/local/tomcat/bin/startup.sh
[root@web33 ~]# echo "usr/local/tomcat/bin/startup.sh" >> /etc/rc.local  
[root@web33 ~]# chmod +x /etc/rc.local

② 查看服务运行信息

[root@web33 ~]# ss -nlptu | grep java
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8005                 :::*                   users:(("java",pid=11873,fd=67))
tcp    LISTEN     0      100      :::8009                 :::*                   users:(("java",pid=11873,fd=52))
tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=11873,fd=47))

案例8:测试配置

- 具体配置如下:

① 测试NFS服务

② 测试MySQL服务

③ 测试Tomcat连接MySQL服务


步骤1:测试NFS服务

① 在nfs服务器创建网页test.html

[root@nfs30 ~]# echo "web test page" > /sitedir/test.html
[root@nfs30 ~]# cat /sitedir/test.html
web test page

② 在web服务器上查看是否同步test.html

[root@web33 ~]# cat /usr/local/tomcat/webapps/ROOT/test.html
web test page

③ 在客户端访问网站服务

[root@localhost ~]# curl http://192.168.4.33:8080/test.html
web test page

步骤2:测试MySQL服务

① 在主数据库服务器上添加库和表,及访问数据的连接用户

[root@mysql11 ~]# mysql -uroot -p123qqq...A
mysql> create database gamedb;   //建库
mysql> create table gamedb.user(name char(10));   //建表
mysql> grant select,insert,update,delete on gamedb.* to army@'%' identified by '123qqq...A';  //授权jerry用户

② 在从服务器查看是否同步数据

[root@mysql22 ~]# mysql -uroot -p123qqq...A
mysql> show grants for army@'%';    //查看授权用户
+------------------------------------------------------------------+
| Grants for army@%                                                |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'army'@'%'                                 |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `gamedb`.* TO 'army'@'%' |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)mysql> desc gamedb.user;      //查看库表结构
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
1 row in set (0.01 sec)

③ 测试读写分离服务

在web33网站服务器上,连接maxscale77读写分离服务器

[root@web33 ~]# yum -y install mariadb    //安装提供连接命令软件[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.77 -P4006
MySQL [(none)]> select * from gamedb.user;    //查询数据
+------+
| name |
+------+
| jack |
+------+
1 row in set (0.00 sec)MySQL [(none)]> insert into gamedb.user values("AnJ");   //存储数据
Query OK, 1 row affected (0.01 sec)
MySQL [(none)]> select * from gamedb.user;
+------+
| name |
+------+
| jack |
| AnJ  |
+------+
2 rows in set (0.00 sec)

④ 在主服务器本机登录查看数据

mysql> select * from gamedb.user;
+------+
| name |
+------+
| jack |
| AnJ  |
+------+
2 rows in set (0.00 sec)

步骤3:Tomcat连接MySQL服务

① 在nfs服务共享目录编写网页文件

[root@nfs30 ~]# vim /sitedir/linkdb.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="java.naming.*" %>
<%@ page import="java.sql.*" %>
<html><body><%Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://192.168.4.11:3306/gamedb","army","123qqq...A");
Statement state=con.createStatement();
String sql="insert into user values('lucy')";    //插入语句
state.executeUpdate(sql);%><h1>data save ok</h1></body>
</html>

② 在浏览器地址栏里输入网站访问

③ 在主数据库服务器查看数据

[root@mysql11 ~]# mysql -uroot -p123qqq...A -e 'select * from gamedb.user'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+
| name |
+------+
| jack |
| AnJ  |
| lucy |
+------+

小结:

本篇章节为【第四阶段】PROJECT2-DAY1 的学习笔记,这篇笔记可以初步了解到 部署数据库服务MySQL、部署共享存储NFS、配置网站服务、测试配置。


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。


http://www.ppmy.cn/ops/119104.html

相关文章

人工智能 | 手工测试用例转Web自动化测试生成

简介 在传统编写 Web 自动化测试用例的过程中&#xff0c;基本都是需要测试工程师&#xff0c;根据功能测试用例转换为自动化测试的用例。市面上自动生成 Web 或 App 自动化测试用例的产品无非也都是通过录制的方式&#xff0c;获取操作人的行为操作&#xff0c;从而记录测试用…

游戏盾SDK真的能无视攻击吗

游戏盾SDK真的能无视攻击吗&#xff1f;在当今的互联网环境中&#xff0c;游戏行业蓬勃发展&#xff0c;但同时也面临着日益严峻的安全挑战。DDoS攻击、CC攻击、外挂作弊等恶意行为频发&#xff0c;不仅威胁着游戏的稳定性和公平性&#xff0c;也严重影响了玩家的游戏体验。为了…

Google Adsense账号被封怎么办?

海外营销广告通常依赖Google AdSense作为一种流行方法来获得流量。但是&#xff0c;如果您不小心&#xff0c;您的 AdSense 帐户可能会被禁止&#xff0c;让您失去创收的途径。下面我们将总结Google AdSense 帐户被封的常见原因原因以及如何解决此问题。 一、Google AdSense账号…

通信工程学习:什么是VIM虚拟化基础设施管理器

VIM:虚拟化基础设施管理器 VIM(Virtualized Infrastructure Manager)虚拟化基础设施管理器,是一种负责管理和控制虚拟化环境中所有虚拟资源的工具和系统。以下是关于VIM虚拟化基础设施管理器的详细解释: 一、定义与功能 VIM是网络功能虚拟化(NFV)架构中…

[EBPF] 实时捕获DM数据库是否存在SQL阻塞

1. 介绍 eBPF&#xff08;extened Berkeley Packet Filter&#xff09;是一种内核技术&#xff0c;它允许开发人员在不修改内核代码的情况下运行特定的功能。eBPF 的概念源自于 Berkeley Packet Filter&#xff08;BPF&#xff09;&#xff0c;后者是由贝尔实验室开发的一种网…

如何用Python监控本股市的方法

引言 1.1 Python在量化交易中的应用 在金融科技的浪潮中&#xff0c;Python已经成为量化交易领域的一把利器。无论是数据分析、策略开发还是回测优化&#xff0c;Python都能提供强大的支持。其丰富的第三方库&#xff0c;如pandas、numpy、matplotlib和backtrader&#xff0c…

Python知识点:如何使用Flink与Python进行实时数据处理

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 如何使用Flink与Python进行实时数据处理 Apache Flink是一个流处理框架&#xf…

windows11环境安装lua及luarocks(踩坑篇)

一、lua安装及下载 官方地址&#xff1a; Lua Binaries Download 从这里就有坑了&#xff0c;下载后先解压win64_bin.zip&#xff0c;之后解压lib&#xff0c;用lib中的文件替换win64的&#xff0c;并把include文件夹复制过去&#xff0c;之后复制并重命名lua54&#xff0c;方…