配置iSCSI
- 准备三台虚机
[root@room8pc16 ~]# clone-auto7
- 初始化
Node1.tedu.cn 192.168.4.1 iSCSI服务器
Node2.tedu.cn 192.168.4.2 mysql1
Node3.tedu.cn 192.168.4.3 mysql2
关闭防火墙、SELINUX,配置YUM
(1)启动虚拟机
[root@room8pc16 ~]# for vm in rh7_node{1..3}
> do
> virsh start $vm
> done
- 在物理机上连接虚拟机的控制台
[root@room8pc16 ~]# virsh console rh7_node1 #//退出时,按ctrl+]
[root@localhost ~]# nmtui
- iSCSI提供块设备
块设备,如硬盘、光盘、U盘
- iSCSI服务器端为客户端提供块设备,需要起个名,这个名字是IQN
IQN名称规范:iqn.时间.域名的反写.字符串:子字符串
如: iqn.2018-07.cn.tedu.nsd1803:yezhikang
- 在iSCSI服务器上添加额外硬盘
可以在虚拟机不关机的情况下,直接添加硬盘。为node1加一块20GB的硬盘。
配置iSCSI服务端
- 安装软件包
[root@node1 ~]# yum install -y targetcli
- 为vdb分区
MBR: 主引导记录,这种分区格式,最多只能支持4个分区,最大支持2.2TB左右硬盘
GPT:GUID分区表,可以支持大硬盘,可以支持128个主分区
[root@node1 ~]# parted /dev/vdb
(parted) mklabel gpt
(parted) mkpart primary 1M 50%
(parted) mkpart primary 50% 100%
(parted) quit
[root@node1 ~]# lsblk
- 配置iscsi
[root@node1 ~]# targetcli
/> /backstores/block create formysql /dev/vdb1 #//给vdb1起个名字formysql,回入到iscsi管理中
/> /iscsi create iqn.2018-07.com.cnbly.yang #//创建供客户端访问的iqn名字
/> /iscsi/iqn.2018-07.com.cnbly.yang/tpg1/luns create /backstores/block/formysql #//把存储绑定到iqn名字中
/> /iscsi/iqn.2018-07.com.cnbly.yang/tpg1/acls create iqn.2018-07.com.cnbly.node2 #//配置ACL,限定允许访问的客户端
/> /iscsi/iqn.2018-07.com.cnbly.yang/tpg1/acls create iqn.2018-07.com.cnbly.node3
/> saveconfig #//保存
/> exit #//退出
配置node2为客户端
- 安装软件包
[root@node2 ~]# yum install -y iscsi-initiator-utils
- 客户端修改iqn名字
[root@node2 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-07.com.cnbly.node2
- 发现存储端,此时可以发现名字,但是不会多出硬盘
[root@node2 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
- 登陆iscsi设备,出现新硬盘
[root@node2 ~]# systemctl restart iscsi
[root@node2 ~]# lsblk #// 将会出现sda
[root@node2 ~]# systemctl enable iscsi
[root@node2 ~]# systemctl enable iscsid
iscsi服务用于自动登陆,iscsid是守护进程
- 安装mariadb-server,将sda分区、格式化,挂载到mariadb的工作目录下
[root@node2 ~]# yum -y install mariadb-server
[root@node2 ~]# mkfs.ext4 /dev/sda1
[root@node2 ~]# mount /dev/sda1 /var/lib/mysql/
[root@node2 ~]# chown mysql.mysql /var/lib/mysql/
- 启动mariadb,创建库和表
[root@node2 ~]# systemctl start mariadb
[root@node2 ~]# systemctl enable mariadb
[root@node2 ~]# mysql
MariaDB [(none)]> create database testuser;
MariaDB [(none)]> use testuser;
MariaDB [testuser]> create table students (name varchar(20));
MariaDB [testuser]> INSERT INTO students VALUES('zhouyu');
iSCSI:
当node2节点出现故障时,可以使用node3进行替换
- 配置iscsi客户端
[root@node3 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-07.com.cnbly.node3
[root@node3 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
[root@node3 ~]# systemctl restart iscsi
- 配置mariadb-server
[root@node3 ~]# yum install -y mariadb-server
[root@node3 ~]# mount /dev/sda1 /var/lib/mysql/
[root@node3 ~]# systemctl start mariadb
注意:千万不要使用两个节点同时挂载相同的文件系统(分区),如果多个节点同时挂载这个文件系统,很可能会导致文件系统损坏,数据丢失!因为XFS/EXT3/EXT4这些文件系统都是单节点文件系统。红帽的GFS才能支持多节点同时挂载。
UDEV:动态管理硬件文件的方法。如,把U盘接入到主机,主机会多一个硬盘文件,把U盘移除的时候,硬盘文件消失。
1、udev规则文件存放目录/etc/udev/rules.d/
2、规则文件命名:数字-名字.rules
数字大小顺序是规则文件执行的顺序
3、应用udev,给iscsi磁盘创建一个软链接叫idisk
(1)查看iscsi磁盘(sda)在/sys/目录中的位置
[root@node3 ~]# udevadm info --query=path --name=/dev/sda1
(2)通过上一步的路径,查看iscsi磁盘的信息(以和其他设备进行区别)
root@node3 ~]# udevadm info --query=all --attribute-walk --path=/devices/platform/host2/session1/target2:0:0/2:0:0:0/block/sda/sda1
(3)创建规则文件
[root@node3 ~]# vim /etc/udev/rules.d/90-iscsi.rules
...
KERNEL=="sd[a-z]*", ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{model}=="formysql ", SYMLINK+="idisk%n"
注:KERNEL==””表示内核识别出来的设备名
ACTION==“add”表示新接入设备
SUBSYSTEMS和ATTRS{model}是第(2)步查到的
SYMLINK表示创建符号链接,+=表示额外创建,%n是分区号
(4)只有把磁盘移除再接入才能生效或是重启系统
[root@node3 ~]# systemctl stop mariadb
[root@node3 ~]# umount /dev/sda1
[root@node3 ~]# iscsiadm --mode node --targetname iqn.2018-07.cn.tedu.nsd1803 --portal 192.168.4.1:3260 --logout
[root@node3 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
[root@node3 ~]# systemctl restart iscsi
[root@node3 ~]# ll /dev/idisk*