Linux云计算 |【第四阶段】PROJECT2-DAY1
综合项目内容:
部署数据库服务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/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
[root@mysql11 ~]# pvscan
PV /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 vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 9.99 GiB //总大小
PE Size 4.00 MiB //PE总个数
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID WAR13a-umgc-C5tX-yLXa-M3o2-N35N-FGq7b1
④ 创建LV
[root@mysql11 ~]# lvcreate -L 9.99G -n lv0 vg0 //创建LV名称为lv0大小9.99G
Rounding up size to full physical extent 9.99 GiB
Logical 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/lv0
LV Name lv0
VG Name vg0
LV UUID R4q7uX-K96d-9Nw2-9HPV-u0lb-FeDs-Qs8N0i
LV Write Access read/write
LV Creation host, time mysql11, 2021-06-22 10:32:19 +0800
LV Status available
# open 0
LV Size 9.99 GiB //总大小
Current LE 2558
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block 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 event
Master_Host: 192.168.4.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master11.000001
Read_Master_Log_Pos: 441
Relay_Log_File: mysql22-relay-bin.000002
Relay_Log_Pos: 319
Relay_Master_Log_File: master11.000001
Slave_IO_Running: Yes
Slave_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: Yes
Slave_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 maxscale
PID TTY TIME CMD
11376 ? 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 -P4006
mysql> 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:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。