1、环境准备
(1)为了实现多节点数据共享的功能,需要提供多节点共享的存储设备,在当前版本下(V009R009)共享存储通常需要两块SAN设备分别作为数据存储及投票存储(如果是一块存储,数据存储的磁盘io耗尽会导致影响投票存储进而重启服务器)。投票存储一般需要100M以上的空间。
(2)操作系统的hostname不可以有特殊字符
--设置主机名
--(db1)(root#)
hostnamectl set-hostname szjh1
--(db2)(root#)
hostnamectl set-hostname szjh2
(3)需要事前申请好vip
2、配置 /etc/hosts(所有节点)
--(root#)
cat<<-EOF>>/etc/hosts
172.27.130.51 szjh1
172.27.130.52 szjh2
EOF
3、关闭防火墙(所有节点)
--(root#)
systemctl stop firewalld
systemctl disable firewalld
4、关闭 SELNUX(所有节点)
--(root#)
查询:getenforce
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
5、创建主机用户(所有节点)
--为了使共享磁盘在节点间迁移时不会因改变属主而失去访问权限,我们需要保证共享磁盘的属主(也就是拥有 KingbaseES 实例的用户)在每个节点上的 uid 一致。
--(root#)
useradd -u 2000 kingbase
echo "Kbase@4202" | sudo passwd --stdin kingbase
6、系统参数配置(所有节点)
--为了避免在 KingbaseES 安装和使用过程中出现问题,官方建议调整系统内核参数:
--(root#)
shmall=$(echo "$(free -b | grep Mem | awk '{print $2}') / 4096" | bc)
shmmax=$(echo "$(free -b | grep Mem | awk '{print $2}') * 8 / 10" | bc)
cat<<-EOF>>/etc/sysctl.conf
fs.aio-max-nr= 1048576
fs.file-max= 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni= 4096
kernel.sem= 50100 64128000 50100 1280
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= 1048576
vm.swappiness=1
vm.overcommit_memory=2
EOF
7、资源配置(所有节点)
--限制用户可使用的资源数量对系统的稳定性非常重要,可以通过调整资源限制数量改进系统性能:
--(root#)
cat<<-EOF>>/etc/security/limits.conf
kingbase soft nofile 655360
kingbase hard nofile 655360
kingbase soft nproc 655360
kingbase hard nproc 655360
kingbase soft memlock unlimited
kingbase hard memlock unlimited
kingbase soft core unlimited
kingbase hard core unlimited
kingbase soft stack unlimited
kingbase hard stack unlimited
EOF
8、配置时间同步(所有节点)
这个不是必须配置,但是建议配置,用于在系统中配置 NTP 实现时间同步。
--(root#)
--RHEL7默认启用的chronyd不好用
systemctl stop chronyd
systemctl disable chronyd
yum -y install ntp
sed -i '/^server/ s/\(.*\)/# \1/' /etc/ntp.conf
sed -i '$ a server 127.127.1.0 iburst' /etc/ntp.conf
systemctl restart ntpd
systemctl enable ntpd
--注
--设置客户端IP限制
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
--server 127.127.1.0 iburst
server 指定NTP服务器
127.127.1.0 是服务器主板晶体芯片上的地址
iburst 表示加速同步
--查看NTP监听端口
ss -lntup | grep ntpd
监听UDP的123端口
--Linux防火墙放行
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
+2 NTP Client
ntpdate 192.168.1.4
根据NTP服务器(例如1.1.1.1)修改自己的时间
不能同步chronyd服务器
hwclock -w
将系统时间同步到BIOS中
vi /etc/ntp.conf
server 192.168.1.4 iburst
systemctl restart ntpd
systemctl enable ntpd
timedatectl
NTP enabled: yes
NTP synchronized: yes
chronyc sources -v
MS中有*表示已同步,MS中有?表示没有同步
9、修改IPC(所有节点)
--(root#)
vim /etc/systemd/logind.conf
RemoveIPC=no
生效方式
systemctl daemon-reload
systemctl restart systemd-logind
sudo sed -i 's/^#\?RemoveIPC=.*/RemoveIPC=no/' /etc/systemd/logind.conf && \
sudo systemctl daemon-reload && \
sudo systemctl restart systemd-logind
查询:
loginctl show-session | grep RemoveIPC
10、配置system.conf文件
--(root#)
--全局修改
vim /etc/systemd/system.conf 修改参数
DefaultTasksAccounting=no 注:所有服务不再有此限制
sudo sed -i 's/^#\?DefaultTasksAccounting=.*/DefaultTasksAccounting=no/' /etc/systemd/system.conf && sudo systemctl daemon-reexec
注:修执行命令后 service sshd status 观察是否生效(无Limit那一行),若无生效,重启。
查询:
systemctl show -p DefaultTasksAccounting
11、修改磁盘IO调度策略
--(root#)
echo deadline > /sys/block/vdb/queue/scheduler
此命令添加到rc.local
注:deadline综合测试性能表现更稳定。
12、安装kingbaseRAC软件
mkdir -p /home/kingbase/install
mkdir -p /home/kingbase/kingbaseES
chown -R kingbase:kingbase /home/kingbase
mkdir /iso
mount -o loop /root/KingbaseES_V008R006C009B0014_Lin64_install.iso /iso
cp -rp /iso/* /home/kingbase/install
cp -rp /root/license.dat /home/kingbase/install
chmod -R 775 /home/kingbase/install/license.dat
su - kingbase
cd /home/kingbase/install/
bash setup.sh -i console
13、创建集群部署目录(所有节点)
--(root#)
cd /home/kingbase/kingbaseES/install/script
sh rootDeployClusterware.sh
--执行前需要检查 rootDeployClusterware.sh 脚本中的 INSTALLDIR 变量,需要修改为 KingbaseES 软件安装目录
检查有没有生成/opt/KingbaseHA/目录
ll /opt/KingbaseHA/
14、配置 cluster_manager.conf(所有节点)
[Part 1]
cluster_name=kclusterrac --可改可不改
node_name=(szjh1 szjh2) --主机名
node_ip=(172.27.130.51 172.27.130.52) --物理ip
[Part 2]
votingdisk=/dev/vdb1 --投票盘
[Part 3]
sharedata_disk=/dev/vdb2--数据盘
sharedata_dir=/data
[Part 4]
kingbase_install_dir=/home/kingbase/KingbaseRAC/Server--rac软件安装目录
[Part 5]
database="test"
db_user="system"
db_port=54321
db_mode="oracle"
db_auth="scram-sm3"
password="Kbase@4202"
initdb_options="-A $db_auth -U $db_user -m $db_mode -E GB18030 --locale='zh_CN.GB18030'"
[Part 7]
enable_vip=1
virtual_ip=(172.27.130.233/24)
net_device=(enp4s3 enp4s3)
net_device_ip=(172.27.130.51 172.27.130.52)
[Part 8]
heuristics_ping_gateway="网关" --查询网关:route -n
[Part 9]
rac_local_data=/home/kingbase
[Part 10]
use_scmd=1
scmd_install_dir=/home/kingbase/securecmdd--securecmdd安装目录
15、安装免密securecmdd
root用户执行如下命令安装securecmdd
cp /home/kingbase/kingbaseES/ClientTools/guitools/DeployTools/zip/securecmdd.zip /home/kingbase/
unzip securecmdd.zip
cd /home/kingbase/securecmdd/bin
./sys_HAscmdd.sh init
./sys_HAscmdd.sh start
./sys_HAscmdd.sh stop
ps -ef|grep secure
16、初始化仲裁盘(节点一)
[root]
./cluster_manager.sh --qdisk_init
17、初始化数据盘(节点一)
[root]
./cluster_manager.sh --cluster_disk_init
18、初始化所有基础组件(所有节点)
--使用 root 用户在所有节点执行,初始化所有基础组件,如:corosync,pacemaker,corosync-qdevice:
[root]
./cluster_manager.sh --base_configure_init
--初始化之后,查看环境变量cat /root/.bashrc,并source /root/.bashrc
--检查 corosync 和 pacemaker 进程:
[root]
--查看集群资源:
[root]
19、初始化gfs2(所有节点)
[root]
./cluster_manager.sh --init_gfs2
20、配置集群相关资源(fence、dlm、gfs2资源)(节点一)
[root]
./cluster_manager.sh --config_gfs2_resource
--查看集群资源,要等待 dlm 和 gfs2 全都启动到 Started 才算完成
21初始化数据库集簇(节点一)
[root]
./cluster_manager.sh --init_rac
22、配置数据库资源,初始化 PINGD、FIP、DB 资源(节点一)
--推荐使用 pacemaker 管理数据库的启动和停止,这样可以获得更好的可用性。
[root]
./cluster_manager.sh --config_rac_resource
--查看资源配置信息:
[root]
crm config show
--查看当前数据库状态:
[root]
crm resource status clone-DB
23、一些运维命令
关闭、开启数据库资源、查看数据库状态(rac不能使用sys_ctl来单独启停数据库)
[root]
crm resource stop clone-DB
crm resource start clone-DB
crm resource status clone-DB
查看集群状态
[root]
crm status
关闭集群:
[root]
./cluster_manager.sh stop
启动集群
[root]
./cluster_manager.sh start




