部署环境:
主机一 | 主机二 | |
host ip | 192.168.80.46 | 192.168.80.47 |
vip | 192.168.80.48 | 192.168.80.49 |
private ip | 192.168.10.10 | 192.168.10.11 |
storage ip | 192.168.20.33 | 192.168.20.34 |
主机名 | rac19c1 | rac19c2 |
需要上传的软件包:
一.虚拟机配置
选择中标麒麟IOS文件,声卡打印机,USB适配器可以拔掉。
1.配置语言环境:
vi /etc/locale.conf
2.配置yum源
挂载:
验证yum源可用性:
3.关闭防火墙:
4.关闭selinux
5.设置disk.enableUUID = “true”
编辑以下文件:
6.配置网卡
重启服务器:
验证语言与防火墙:
关机:
二.克隆虚拟机
1.克隆storage
2.克隆racnode1与racnode2
三.配置虚拟机网络
虚拟网络配置如下:
Storage节点 虚拟机配置:
虚拟机内root用户登录:
编辑第二块网卡:
重启网卡:
尝试使用远程终端连接:
Storage 节点网络配置结束
racnode1节点网络配置:
启动后用root用户登入
更改用户名:
Ens32配置:
Ens34配置:
Ens35配置:
重启网卡:
尝试连接节点1:
racnode2节点网络配置:
Ens34配置:
Ens35配置:
重启网卡后检查:
网络环境检查是否通畅:
每个节点的每个ip都ping一下看看是否通畅
至此网络配置结束
四.配置共享存储
存储规划:
Storage中添加磁盘:
配置共享存储,在共享存储中创建target服务,创建iqn号,访问iqn下面的lun。
存储服务器server端
安装target包
yum -y install targetd targetcli
启动target服务
systemctl start target
开机自动启动target服务
systemctl enable target
查看target的状态
systemctl status target
查看磁盘
先把准备共享的块做出来,创建一个target,在 target 上创建 LUN
[root@storage ~]# targetcl
目前是在根路径下,直接敲ls(和linux的ls一样)命令来查看所有路径及路径下的配置,敲pwd命令可以显示当前所在的路径(和linux的pwd一样)。
cd /backstores/block
将磁盘与名称绑定
create name=disk1 dev=/dev/sdb
create name=disk2 dev=/dev/sdc
create name=disk3 dev=/dev/sdd
create name=disk4 dev=/dev/sde
create name=disk5 dev=/dev/sdf
create name=disk6 dev=/dev/sdg
create name=disk7 dev=/dev/sdh
create name=disk8 dev=/dev/sdi
create name=disk9 dev=/dev/sdj
进入ISCSI路径下创建完成iscsi名称
cd /iscsi
create iqn.2024-06.com.zhangxin:racdisk
创建完成iscsi名称后,下面会默认创建一个tpg1的路径,在tpg1路径下有三个路径为主要的:
1.acls(客户端访问名称,免认证配置)
2.luns(共享lun存储池,调用block共享块)
3.portals(共享存储地址和端口)
绑定lun
cd iqn.2024-06.com.zhangxin:racdisk/tpg1/luns
create lun=lun1 storage_object=/backstores/block/disk1
create lun=lun2 storage_object=/backstores/block/disk2
create lun=lun3 storage_object=/backstores/block/disk3
create lun=lun4 storage_object=/backstores/block/disk4
create lun=lun5 storage_object=/backstores/block/disk5
create lun=lun6 storage_object=/backstores/block/disk6
create lun=lun7 storage_object=/backstores/block/disk7
create lun=lun8 storage_object=/backstores/block/disk8
create lun=lun9 storage_object=/backstores/block/disk9
创建acls免认证访问
创建允许客户端连接对象
cd /iscsi/iqn.2024-06.com.zhangxin:racdisk/tpg1/acls
/iscsi/iqn.20...isk/tpg1/acls> create wwn=iqn.2024-04.com.zhangxin:rac19c1
/iscsi/iqn.20...isk/tpg1/acls> create wwn=iqn.2024-04.com.zhangxin:rac19c2
配置完成后
cd /
保存配置到配置文件
Saveconfig
下面配置 rac两个节点的target客户端
配置存储客户端client
安装客户端软件
yum -y install iscsi-initiator-utils
启动服务
systemctl start iscsid.service
systemctl start iscsi.service
开机自动启动
systemctl enable iscsid.service
systemctl enable iscsi.service
racnode1 修改配置文件
vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2024-06.com.zhangxin:rac19c1
racnode2 修改配置文件
vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2024-06.com.zhangxin:rac19c1
重启客户端服务
systemctl restart iscsid.service
systemctl restart iscsi.service
两个节点全执行:
客户端连接网络存储
发现网络存储
iscsiadm -m discovery -t st -p 192.168.20.30
连接网络存储
iscsiadm -m node -T iqn.2024-06.com.zhangxin:racdisk -p 192.168.20.30:3260 -l
lsblk 可以看到 存储服务器的磁盘
关机重启查看 磁盘是否能自动共享,注意开机先开存储服务器
在两节点查看共享磁盘,能看见说明没问题了。
至此共享磁盘配置完毕
五.配置共享存储多路径
查看登录的session 会话
iscsiadm -m session
iscsiadm -m session -P 3 查看登录session的详细信息
iscsiadm -m discovery -t st -p 192.168.20.31
iscsiadm -m node -T iqn.2024-06.com.zhangxin:racdisk -p 192.168.20.31:3260 -l
可以看到存储服务器的磁盘被识别了两次
查看所有磁盘id:
for i in b c d e f g h i j k l m n o p q r s;
do
echo "sd$i" "`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i` ";
done
安装多路径软件:
yum install device-mapper-multipath device-mapper -y
设置开机自动启动多路径
systemctl enable multipathd.service
启动多路径
配置multipath.conf
/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf
/sbin/mpathconf –enable
启动服务
systemctl start multipathd.service
相同id的磁盘已被绑定。
至此多路径绑定完毕。
六.数据库服务器参数配置(该参数生产环境需要具体商定)
1、设置/etc/hosts
#public ip
192.168.80.46 rac19c1
192.168.80.47 rac19c2
#vip ip
192.168.80.48 rac1-vip
192.168.80.49 rac2-vip
#private ip
192.168.10.10 rac1-priv
192.168.10.11 rac2-priv
#scan ip
192.168.80.50 rac19c-scan
2、创建用户和组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
/usr/sbin/useradd -u 54331 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba grid
echo 'passworda2!' | passwd --stdin grid
echo 'passworda2!' | passwd --stdin oracle
在虚拟机中添加一块100磁盘用于安装
扫一下盘:
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
在最底下 sdt,已经可以找到了100G磁盘
对磁盘格式化后挂载:
授权:
mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
七.安装依赖包
yum install -y bc gcc gcc-c++ binutils compat-libcapl compat-libstdc++ dtrace-modules dtrace-modules-headers
yum install -y dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel
yum install -y libstdc99 libstdc++-devel libxcb make smartmontools sysstat unzip
yum install -y unixODBC unixODBC-devel
yum install -y kmod*
yum install -y ks*
yum install -y libaio*
yum install -y compat*
八.修改资源限制参数
vi /etc/security/limits.conf
cat >> /etc/security/limits.conf << "EOF"
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 65536
grid hard nofile 65536
grid soft stack 32768
grid hard stack 32768
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 32768
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited
EOF
vi /etc/pam.d/login
echo "session required pam_limits.so" >> /etc/pam.d/login
九、修改内核参数
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.panic_on_oops = 1
kernel.shmmax = 4831838208
kernel.shmall = 1179648
kernel.shmmni = 4096
vm.min_free_kbytes = 524288
vm.swappiness = 10
vm.nr_hugepages = 2560
sysctl -p
# SGA=4000*0.7*0.8=2240M
# PGA=4000*0.7*0.2=560
单个共享内存段的最大值,要放下整个SGA,
kernel.shmmax=4.5*1024*1024*1024=4831838208
kernel.shmall=kernel.shmmax/getconf PAGESIZE=4831838208/4096=1179648
[root@node1 yum.repos.d]# getconf PAGESIZE
4096
[root@node1 yum.repos.d]#
安装oracle时实际设置 :SGA=4500M
#vm.nr_hugepages= 1280 大内存页, < shmmax= 2560m/2m=1280
vm.nr_hugepages= 2240M/2=1120
十.关闭透明页
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
配置开机设置never
vi /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
添加或修改transparent_hugepage=never,numa=off文件中的参数
vi /etc/default/grub:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
运行grub2–mkconfig 命令以重新生成grub.cfg文件
grub2-mkconfig -o /boot/grub2/grub.cfg
十一.设置用户环境变量
grid用户环境变量
vi .bash_profile
alias sqlplus="rlwrap sqlplus"
export TMP=/tmp
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM1
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
alias sqlplus="rlwrap sqlplus"
export TMP=/tmp
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM2
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
oracle用户环境变量
vi .bash_profile
alias sqlplus="rlwrap sqlplus"
export TMP=/tmp
export TMPDIR=$TMP
export LANG=en_US
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=racdb1
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.UTF8
vi .bash_profile
alias sqlplus="rlwrap sqlplus"
export TMP=/tmp
export TMPDIR=$TMP
export LANG=en_US
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
export ORACLE_SID=racdb2
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.UTF8
十二.配置ASM磁盘权限
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
ENV{DM_NAME}=="mpatha", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathb", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathc", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathd", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathe", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathf", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathg", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathh", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="mpathi", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
/sbin/udevadm control --reload
/sbin/udevadm trigger --type=devices --action=change
udevadm trigger
至此服务器参数配置准备完毕。
十三.集群部署
软件包上传到哪里都可以,我这里自己加了一块硬盘,专门用于放置软件。
我们这里需要三个安装包:
上传到/soft 中
unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid/
安装grid中的rpm包(两个节点都需要安装,用scp传到节点2):
两个节点rpm
安装之后就可以进行grid安装
进入集群安装:
Scanname 需要与/etc/hosts中保持一致
Vip名称也要对应上
添加主机2
点击setup,成功后点击test。这里test大概率报错,原因是操作系统OpenSSH版本太高,ssl倒是没问题 。MOS上面说的 加-T参数我尝试了但没有解决。
解决方案:
1.降级操作系统 ssh(不推荐)
Index of /pub/OpenBSD/OpenSSH/portable/
去网站里面下载7.4p1的openssh
安装必备的软件包:
yum -y install gcc libcap libcap-devel glibc-devel pam-devel krb5-devel krb5-libs
yum install -y openssl-devel
解压压缩包
下面就是源码安装三板斧
- 编译安装
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-ssl-dir=/usr --with-md5-passwords --mandir=/usr/share/man --with-kerberos5=/usr/lib64/libkrb5.so
- make
- make install
两个节点都操作一下,值得注意的是这里并没有卸载掉原本的OpenSSH8.0,不知道是否是覆盖了,还需要探究。
下面是make install可能碰到的错误
解决方案:重新生成证书文件
再重新执行make install
查看两个节点的SSH版本:
再次setup,test一次,已经可以成功了。
2.自己配置互信(推荐)
配置oracle用户的节点互信:
1、在两个节点执行:
su - oracle
mkdir ~/.ssh
chmod 755 .ssh
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa
全部按enter键即可。
2、将所有的key文件汇总到一个总的认证文件中,在节点1上执行:
su – oracle
ssh rac19c1 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh rac19c2 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh rac19c1 cat ~/.ssh/id_dsa.pub >> authorized_keys
ssh rac19c2 cat ~/.ssh/id_dsa.pub >> authorized_keys
在命令执行的过程中需要输入rac1和rac2对应的oracle用户的密码。
3、节点1上存在一份完整的key,拷贝到节点2:
[oracle@rac19c1 ~]$ cp authorized_keys .ssh/
[oracle@rac19c1 ~]$ cd .ssh/
[oracle@rac19c1 .ssh]$ chmod 600 authorized_keys
[oracle@rac19c1 .ssh]$ scp authorized_keys rac19c2:~/.ssh/
[oracle@rac19c2 ~]$ cd .ssh/
[oracle@rac19c2 .ssh]chmod 600 authorized_keys
4、在2个节点都执行一下命令
ssh rac19c1 date
ssh rac19c2 date
ssh rac19c1-priv date
ssh rac19c2-priv date
5、检验是否配置成功,在节点1上不用输入密码就可以通过ssh连接节点2,说明配置成功
[oracle@rac19c1 ~]$ ssh rac19c2
[oracle@rac19c2 ~]$ exit
配置grid用户的节点互信:
与Oracle用户执行方式相同,只是执行脚本的用户变成了grid。
GI部署只配置grid互信即可
最重要的一步:自己配置./gridSetup.sh的参数
我们就继续安装
.
下面按照预检配置即可,DBCA这里也省略,生产环境不同配置项也不同。
需要注意的是dbca 的时候也需要加
dbca -J-Doracle.install.ssh.setupCheckEnabled=false
与grid安装类似,也需要添加不检查互信的参数