FusionInsight 产品 之 preinstall 功能简介 及 FAQ

网友投稿 1279 2022-05-28

FusionInsight 产品 之 preinstall 功能简介 及 FAQ

本文主要对FusionInsight中preinstall工具功能简单介绍,以及在使用过程中常见的问题进行了简单总结, 目的在于帮助大家对preinstall相关功能有个简单的认识,并在使用过程中方便问题排查。

1. 背景及目的

FusionInsight产品在部署时对操作系统、系统软件、OS配置、磁盘等有特定的要求,故在产品安装前需要对OS进行配置,以保证大数据稳定、高效运行,实现大数据版本与OS版本的解耦

2. preinstall功能:

preinstall工具会配置OS设置系统参数,补充RPM包、配置hostname、关闭swap、磁盘分区格式化、安装statmon服务、rngd服务和diskmgt服务(根据配置是否安装)

2.1 配置OS设置系统参数

1. 设置系统服务 1) 配置启动crond服务 2) 配置启动sshd服务 3) 配置关闭iptables服务 4) 如果存在cgconfig服务,配置关闭cgconfig服务 5) 配置启动ipmi服务 6) 配置启动ipmievd服务 7) 配置启动sssd服务 8) 配置启动ntp服务 2. 设置系统配置 1) 修改/etc/sysconfig/i18n文件,将LANG设置为en_US.UTF-8 2) 修改/etc/security/limits.d/90-nproc.conf文件,将nproc设置为600000 3) 修改/etc/security/limits.d/90-nofile.conf文件,将nofile设置为640000 4) 修改/etc/fstab文件,如果存在/、/boot、/home、/opt、/tmp、/var、/var/log的挂载点,那么在挂载参数中增加errors=panic配置项,并重新挂载 5) 在/etc/profile添加配置export NSS_SDB_USE_CACHE=no 6) 根据配置文件中的g_swap_off开关关闭swap 7) 根据配置文件中的g_hostname_conf设置节点的主机名并配置/etc/hosts 3. 修改系统参数 1) 修改/etc/sysctl.conf文件,配置kernel.sysrq = 1 2) 修改/etc/sysctl.conf文件,配置kernel.kstack_depth_to_print = 20 3) 修改/etc/sysctl.conf文件,配置kernel.panic_on_oops = 1 4) 修改/etc/sysctl.conf文件,配置kernel.panic = 5 5) 修改/etc/sysctl.conf文件,配置kernel.hung_task_timeout_secs = 3600 6) 修改/etc/sysctl.conf文件,配置kernel.hung_task_panic = 1 7) 修改/etc/sysctl.conf文件,配置vm.panic_on_oom = 2 8) 修改/etc/sysctl.conf文件,配置vm.oom_dump_tasks = 1 9) 修改/etc/sysctl.conf文件,配置kernel.softlockup_panic = 1 10) 修改/etc/sysctl.conf文件,注销 net.bridge.bridge配置项 11) 修改/etc/sysctl.conf文件,配置vm.swappiness = 0 12) 修改/etc/sysctl.conf文件,配置fs.file-max = 640000 13) 修改/etc/sysconfig/selinux文件,配置SELINUX=disabled 14) 修改/etc/sysconfig/cpuspeed文件,配置GOVERNOR=preformance

1. 设置系统服务 1) 配置启动crond服务 2) 配置启动sshd服务 3) 配置启动ipmi服务 4) 配置启动ipmievd服务 5) 配置启动nscd服务 6) 配置启动ntp服务 2. 设置系统配置 1) 修改/etc/sysconfig/language文件,将LANG设置为en_US.UTF-8 2) 修改/etc/sysconfig/clock文件,将HWCLOCK 设置为 –u 3) 修改/etc/security/limits.d/90-nproc.conf文件,将nproc设置为60000 4) 修改/etc/security/limits.d/90-nofile.conf文件,将nofile设置为64000 5) 修改/etc/fstab文件,如果存在/、/boot、/home、/opt、/tmp、/var、/var/log的挂载点,那么在挂载参数中增加errors=panic配置项,并重新挂载 6) 在/etc/profile添加配置export NSS_SDB_USE_CACHE=no 7) 根据配置文件中的g_swap_off开关关闭swap 8) 根据配置文件中的g_hostname_conf设置节点的主机名并配置/etc/hosts 3. 修改系统参数 1) 修改/etc/sysctl.conf文件,配置kernel.sysrq = 1 2) 修改/etc/sysctl.conf文件,配置kernel.kstack_depth_to_print = 20 3) 修改/etc/sysctl.conf文件,配置kernel.panic_on_oops = 1 4) 修改/etc/sysctl.conf文件,配置kernel.panic = 5 5) 修改/etc/sysctl.conf文件,配置kernel.hung_task_timeout_secs = 3600 6) 修改/etc/sysctl.conf文件,配置kernel.hung_task_panic = 1 7) 修改/etc/sysctl.conf文件,配置vm.panic_on_oom = 2 8) 修改/etc/sysctl.conf文件,配置vm.oom_dump_tasks = 1 9) 修改/etc/sysctl.conf文件,配置vm.swappiness = 0 10) 修改/etc/sysctl.conf文件,配置fs.file-max = 640000 11) 修改/etc/sysconfig/selinux文件,配置SELINUX=disabled

2.2 自动补齐OS缺失的rpm包

如果用户配置了g_add_pkg参数,那么会根据需要配置rpm包.

需要补齐的rpm包配置路径:FusionInsight_SetupTool/preinstall/script/function/add_packages/conf/${OS_NAME}-${VERSION}_must

-rpms-{ARCHITECTURE}.lst

ARCHITECTURE: aarch64/x86_64(默认缺省)

2.3 配置hostname

如果用户配置g_hostname_conf参数,那么preinstall会根据配置修改HostName,并且修改对应的/etc/hosts文件。

2.4 关闭swap

如果用户配置了g_swap_off参数,那么preinstall会自动将系统的swap关闭,并将swap分区卸载。

2.5 磁盘分区格式化

当配置了g_add_pkg值, preinstall工具会根据g_parted_conf配置中指定的配置文件(master.ini, host0.ini, host1.ini……), 对指定主机进行磁盘分区并格式化

master.ini/host*.ini 文件中配置项含义举例说明:

文件master.ini/host*.ini内容样例: #mount required care condition common.conf y y common_condition.sh zookeeper.conf y y zookeeper_condition.sh journaldir.conf y y journaldir_condition.sh namenode.conf y y namenode_condition.sh datanode1.conf n y n datanode2.conf n y n datanode3.conf n y n 配置项说明: 1. mount列:表示要挂载的配置明细(下面会描述到)。如果要多个模块并区,可把配置文件通过#号连接在一起,比如要把ZooKeeper模块和 NameNode模块的目录合在一个盘符上,则可配置mount项为zookeeper.conf#namenode.conf。不过基于FusionInsight组网规划的要求,此并区功能请谨慎使用。 2. required列:表示是否必须挂载,如果填写了y(yes),那么若由于盘数不够或者无符合挂载条件的盘符,则整个流程将失败;而如果填写了n(no), 那么表示不强求挂载此配置项,即其挂载成功与否,不会影响整个流程的结果。 3. care列:表示是否关注此配置项,如果为y表示进行监控处理,如果为n表示只在预安装阶段进行挂载,此后硬盘管理服务不会去监控它,即完全忽略它的存在。 4. condition列:表示配置项的盘符要求条件,比如要求是硬盘容量等。如果为n表示任何一个可用的盘符即可满足条件。 文件common.conf内容样例: ver=1.0 name=common dir=/srv/BigData/common size=300 #unit: G filesystem=ext4 user=omm group=wheel permission=755 notify=common_notify.sh notifytimeout=60 #unit: second description="This is for PT storage." 参数配置说明: 1. ver:表示版本,用于后续升级的判断。 2. name:表示配置项名称。 3. dir:表示挂载目录。 4. size:表示分区大小,单位为G。如果填写max表示剩余的全部盘符空间。 5. filesystem:表示分区的文件系统格式,目前支持ext3/ext4/default三种,其中default是表示同操作系统根分区的挂载文件系统格式, 主要是用来解决redhat和suse的默认文件系统差异。 6. user:表示目录所属用户。 7. group:表示目录所属群主。 8. permission:表示目录权限。 9. notify:表示目录可用/不可用/只读后的通知脚本。 10. notifytimeout:表示执行通知脚本的超时时间。 11. description:表示大数据模块目录配置项的描述。 文件common_condition.sh内容样例: #!/bin/bash if [ is RAID1 ]; then exit 0 else exit 1 fi 脚本说明: 此条件脚本的唯一参数是硬盘设备逻辑盘符(如sda),用来判断此盘符是否符合大数据模块对盘符的要求,如果返回0表示符合;返回其它值则表示不符合。 若条件脚本不存在(比如被误删等),则同填写n处理方式,即表示对盘符无条件要求

2.6 statmon服务:

statmon服务是一个操作系统运行状态的监控服务,它不设置操作系统,而是对操作系统进行监控,监控的日志全部记录在/var/log/osinfo/statistics

/目录下(需要root用户权限)。

statmon对定位问题至关重要,可使用service命令对该服务进行启动、停止和查看状态。

2.7 rngd服务:

当配置了g_feed_random_setup值,preinstall工具会向系统安装rngd服务,preinstall会优先使用系统的haveged服务,如果系统存在haveged服务

(SUSE11.2和SUSE11.3),

那么仅仅是将haveged服务启动,并设置开机启动,如果不存在haveged服务,那么会启动系统的rngd服务

(RedHat/CentOS启动rngd服务,SUSE11.1启动rngd进程,并将进程写入cron中监控)

2.8 diskmgt服务

diskmgt服务是一个磁盘监控服务,它会对通过它挂载的磁盘进行监控,当磁盘分区丢失或者出现只读时(磁盘故障)发送告警,并且尝试修复故障。

FusionInsight 产品 之 preinstall 功能简介 及 FAQ

它也就是我们常说的磁盘热插拔服务。

如果用户没有通过preinstall对磁盘进行分区挂载,那么diskmgt服务将不会安装。

preinstall运行完成之后

diskmgt服务并不会自动启动,需要安装nodeagnt才会启动,当然也可以手动启动

3. 配置说明:

3.1 对应的配置文件为:preinstall.ini (FusionInsight_SetupTool/preinstall/preinstall.ini)

3.2 必须配置的几个配置项:

g_hosts="" 含义:需要配置的 主机名(IP地址)列表 g_parted_conf="" 含义:指定磁盘格式化的配置文件(支持不同节点有不同的分区配置) 相关配置:g_parted= 如果 g_parted=0,该配置项可以为空。 g_pkgs_dir="" 含义:指定rpm源(如果是iso,需要把ISO挂载至目录) 相关配置:g_add_pkg= 如果 g_add_pkg=0,该配置项可以为空。 g_platform="" 含义:指定系统的cup类型,可以执行命令'uname -p'查看 可选项 'x86_64' 'aarch64' 配置项的详细信息可以参考 preinstall.ini 中的说明.

4. 运行(可以在集群中的任一节点上运行)

4.1 运行方式

./preinstall.sh (路径:FusionInsight_SetupTool/preinstall/preinstall.sh)

./setuptool.sh preinstall (路径:FusionInsight_SetupTool/setuptool.sh)

4.2 输入集群密码(默认为集群的root密码)

5. 当前支持的OS版本

redhat-6.3;redhat-6.4;redhat-6.5;redhat-6.6;redhat-6.7;redhat-6.8;redhat-6.9; redhat-7.0;redhat-7.1;redhat-7.2;redhat-7.3;redhat-7.4;redhat-7.5;redhat-7.6; neokylin-5.5;neokylin-6.9;neokylin-7.2;neokylin-7.4;neokylin-7.5;neokylin-7.6; kylin-V10;kylin-V10-fedora; bclinux-7.6; oracle-7.4;oracle-7.5;oracle-7.6; suse-11.1;suse-11.2;suse-11.3;suse-11.4;suse-11; suse-12.0;suse-12.1;suse-12.2;suse-12.3;suse-12.4;suse-12.5; suse-15;suse-15.1; centos-6.4;centos-6.5;centos-6.6;centos-6.7;centos-6.8;centos-6.9;centos-6; centos-7.0;centos-7.1;centos-7.2;centos-7.3;centos-7.4;centos-7.5;centos-7.6;centos-7.9;centos-8.0; euleros-2.0;euleros-2.0sp1;euleros-2.0sp2;euleros-2.0sp3;euleros-2.0sp5;euleros-2.0sp8;openEuler-20.03;euleros-2.0sp9;euleros-2.0sp10;

6. 常见故障处理

preinstall运行出现意外的失败,一般和用户的运行环境有关系,以下为常见的一些问题的处理,仅供参考。

6.1 运行失败,打印Don’t login 192.188.45.182. Return code:255失败信息

出现了Don't login ip地址. Return code:255的失败信息打印,一般是输入的密码不对导致的。解决办法: 1. 检查输入的密码是否正确,如果输入错误,请重新输入正确密码。 2. 检查所有节点的密码是否一致,如果不一致,请将所有节点的密码设置成一致。 3. 检查ip地址指定的节点的sshd的设置是否正确,是否允许对应的用户登录该节点。一般是将/etc/ssh/sshd_config 文件中的PermitRootLogin配置成no导致的

6.2 运行阻塞,preinstall长时间运行没有结束,进度条没有任何变化。

如果节点的磁盘较多,磁盘的容量也比较大,那么preinstall运行确实比较费时,因为格式化大容量磁盘比较慢,在这种场景下,请用户耐心等待。 如果preinstall出现数个小时都没有结束,并且进度条没有任何的变化,那么preinstall可能是出现阻塞了,一般是如下原因导致。 1. 启动ipmi服务阻塞 可查看preinstall的日志,最后的日志是starting ipmievd,而没有其他更多的打印。出现了该问题一般的BMC的ipmi服务存在故障。 解决办法:重启系统。 2. rpm命令阻塞 可运行ps –ef | grep rpm查看rpm命令进程的个数,如果存在几十个甚至上百个rpm相关的命令是可能是rpm命令出现阻塞导致的了。 那么您可以尝试在节点上手工执行rpm -qa | grep glibc命令检查有喜爱rpm命令是否是真的阻塞。 解决办法:运行命令: cd /var/lib/rpm;rm -rf __db*;rpm –rebuilddb,再次运行preinstall。

6.3 运行失败,打印os version not supported失败信息

1. 操作系统版本不支持 打印该失败信息,一般是由于该节点的操作系统不在preinstall当前的支持范围内,当前preinstall支持的操作系统版本为:SuSE11 SP1、 SuSE11 SP2、SuSE11 SP3、RedHat 6.4、RedHat 6.5、RedHat 6.6、RedHat 6.7、CentOS 6.4、CentOS 6.5、CentOS 6.6、CentOS 6.7。 解决办法:重新安装操作系统,操作系统版本仅限上述版本。 2. rpm命令阻塞 可运行ps –ef | grep rpm查看rpm命令进程的个数,如果存在几十个甚至上百个rpm相关的命令是可能是rpm命令出现阻塞导致的了。 那么您可以尝试在节点上手工执行rpm -qa | grep glibc命令检查有喜爱rpm命令是否是真的阻塞。 解决办法:运行命令cd /var/lib/rpm;rm -rf __db*;rpm –rebuilddb,再次运行preinstall。

6.4 运行失败,打印python version is too low. The minimum version is 2.6.5失败信息

打印该失败信息,一般该节点是SuSE11 SP1,因为FusionInsight要求的Python版本最低为2.6.5,而SuSE11 SP1的Python版本小于2.6.5,所以导致失败。 解决办法:升级Python版本至2.6.5或者以上版本。

6.5 运行失败,打印Setup os failed失败信息

打印该失败信息,一般是由于设置系统参数时出现了异常,一般是如下原因造成的(ssh登录到对应失败的节点,进行如下原因排查): 1. /etc/fstab文件异常。该文件存在异常信息,导致preinstall在其中的挂载选项中添加errors=panic项失败。 解决办法:解决/etc/fstab文件异常的问题 2. /etc/hosts中配置的hostname和preinstall.ini中的g_hostname_conf配置的hostname不一致。 解决办法:如果g_hostname_conf配置的对应节点的hostname不正确,那么修改g_hostname_conf的配置,重新执行preinstall。 如果/etc/hosts中的hostname配置不正确,那么将该项删除(preinstall会自动添加正确的hostname)。 3. /etc/hosts中没有配置127.0.0.1 localhost 解决办法:将127.0.0.1 localhost配置到/etc/hosts中 4. /etc/hosts中存在IP地址对应多个主机名的问题。 解决办法:将不正确的主机名删除 5. swapon –s命令显示的swap信息和/etc/fstab中配置的swap信息不一致。一般是由于只运行swapoff将对应的swap关闭, 在没有将swap的配置信息从/etc/fstab中删除。 解决办法,编辑/etc/fstab将swap的配置行全部删除,运行swapoff /dev/sdX将swap关闭。 6. /etc/sysctl.conf文件中包含非法配置项,导致执行sysctl -p失败。 解决办法:删除/etc/sysctl.conf文件中的非法配置项。

6.6 运行失败,打印Disk format failed失败信息

出现该失败的打印一般是由于配置和环境不匹配导致的,登录到对应失败的节点查看入选日志,C60之前版本的默认日志路径为/var/log/diskmgt/autopart.log, C60及以后版本的默认日志路径为/tmp/diskmgt/autopart.log,该文件记录了Disk format failed失败的详细原因: 1. 打印sys swap and fstab swap are different错误。 出现这个错误一般是由于swap没有正确关闭导致的,swapon –s命令显示的swap信息和/etc/fstab中配置的swap信息不一致。一般是由于只运行 swapoff将对应的swap关闭,在没有将swap的配置信息从/etc/fstab中删除。 解决办法,编辑/etc/fstab将swap的配置行全部删除,运行swapoff /dev/sdX将swap关闭。 2. 打印root filesystem(xxxx) is not ext3/ext4错误 当前preinstall仅支持根目录的文件系统为ext3或者ext4的环境,对于其他文件系统的环境,preinstall还不支持。 解决办法:重装系统,将根目录的文件系统设置为ext3或者ext4. 3. 打印fstab mnt(xxxx) dev(xxxx}) dir(xxxx) can not find in system mnt错误 preinstall会检查当前的mount命令显示的挂载和/etc/fstab中的挂载是否一致,如果不一致就会打印上述错误,因为/etc/fstab中的配置 错误可能会导致节点无法重启,所以需要慎重对待。 解决办法:运行mount命令和查看/etc/fstab文件,检查是mount命令错误还是/etc/fstab文件有误,并修正。修正后再次尝试。 4. 打印item(xxxx) dir(xxxxx) already mount错误 指定的目录已经被挂载,而配置中还要求preinstall进行挂载,所以报出这个错误。常见于将diskmgt卸载后,没有将手动将磁盘umount并 修改/etc/fstab,然后就运行了preinstall,实际上这些磁盘都还被挂载着。 解决办法:将对应挂载点的磁盘umount掉,并修改/etc/fstab,修改后重新运行preinstall。 5. 打印item(xxxx) size is max, but pos(xxxx) is not last(xxxxx)错误 出现这种打印,一般常见于并区的场景,也就是一块磁盘划分成多个分区,每个分区挂载在一个目录上。这个使用需要强制指定每一个分区的大小 (并区的最后一个分区不需要),打印上述错误也就是由于在并区的非最后一个分区使用了max来指定分区大小的,这必然会导致分区失败。 只有并区的最后一个分区可用使用max。 解决办法:修改并区的大小配置,出最后一个分区之后,其他的分区必须指定明确的大小,修正后再次运行preinstall。 6. 打印item(xxxx) notify(xxxx) is not exist错误 打印上述错误是由于配置中指定的notify文件不存在。常见于用户手动将整个partition目录删除,然后再将LLD生成的partition目录拷贝过来导致的。 解决办法:重新解压安装包,只需要将LLD生成的文件覆盖到preinstall中即可,请不要删除preinstall中的任何文件。 7. 打印/tmp/fi-preinstall.log do not read or write permissions错误 preinstall没有权限写日志文件/tmp/fi-preinstall.log,该日志文件应该是root:root权限的。常见于用户先使用root用户运行preinstall, 然后又使用非root用户运行preinstall,此时,非root用户就没有权限写/tmp/fi-preinstall.log文件了。 解决办法:使用root用户将/tmp/fi-preinstall.log文件删除或者修改权限。 8. 打印ready line conf(xxxxx}) can not match dev错误 1) 打印上述错误一般是由于当前节点的空白的磁盘数不足导致,比如用户配置挂载10块磁盘,但是当前节点只有5块空白的磁盘, 这就导致空白的磁盘不足,才打印上述错误。 解决办法:修改配置文件,使其和节点上的磁盘数一致;或者在节点上插入足够的磁盘。 2) 也常见于在preinstall.ini文件中将g_parted配置成1导致的。当g_parted配置成1时,他将只会寻找那些没有分区的磁盘, 而节点上可能存在已久被分区的空闲的磁盘,所以导致了和用户预期不一致。 解决办法:将preinstall.ini文件中的g_parted配置成2。 9. 打印disk ready xxxxx need blank disk错误 1) 打印上述错误一般是由于当前节点的空白的磁盘数不足导致,比如用户配置挂载10块磁盘,但是当前节点只有5块空白的磁盘, 这就导致空白的磁盘不足,才打印上述错误。 解决办法:修改配置文件,使其和节点上的磁盘数一致;或者在节点上插入足够的磁盘。 2) 也常见于在preinstall.ini文件中将g_parted配置成1导致的。当g_parted配置成1时,他将只会寻找那些没有分区的磁盘, 而节点上可能存在已久被分区的空闲的磁盘,所以导致了和用户预期不一致。 解决办法:将preinstall.ini文件中的g_parted配置成2。 10. 打印Size of devices /dev/sdX too big to be expressed in 32 bits错误 打印该错误一般是由于磁盘太大导致的,在preinstall的时候,将size配置成max,也就是将整块磁盘全部分配给这个分区, 如果磁盘的大小超过了16T,那么在格式化文件系统的时候,就会报错误,报告磁盘太大而导致了格式化失败。解决办法有两种: 1) 做RAID的时候,将RAID做小一下,比如只有10T等等,只要RAID盘的大小小于16T即可 2) 修改size的大小,也就是说不将整块磁盘分配给该分区,size的大小要小于16T。或者将该磁盘分成多个分区。

6.7 运行成功,但是执行时间较长

如果节点的磁盘较多,磁盘的容量也比较大,那么preinstall运行确实比较费时,因为格式化大容量磁盘比较慢,在这种场景下,请用户耐心等待。 可以查看/tmp/diskmgt/atpt_Dprocess.log(C60以前的版本请查看/var/log/ diskmgt/atpt_Dprocess.log),其中记录了mkfs进程的运行状态。 如果是虚拟机,那么需要检查母机的磁盘IO情况。因为有可能将多个虚拟机建在同一块磁盘上,那么对这个多个虚拟机进行格式化的时候, 虚拟机将对该磁盘产生竞争,而磁盘的性能不足于响应这些虚拟机的请求,导致格式化进程大部分阻塞。可以在母机上运行:iostat -x 1查看磁盘的性能统计信息。

6.8 运行失败,打印失败信息:Don’t find [XXXXX] rpm package in /media for IP地址

preinstall在/media目录下没有找到XXXXX rpm包,或者rpm命令存在问题导致在补充rpm包是出现错误,可能的原因: 1) 挂载的ISO光盘不完整,导致rpm命令出错。具体可以通过计算ISO光盘的MD5值或者比较大小来确定ISO光盘是否完整。 ` 2) rpm命令存在问题。运行rpm –qa | grep glibc等等一系列的rpm命令,如果存在问题,可以运行命令cd /var/lib/rpm;rm -rf __db*;rpm –rebuilddb尝试修复。

FusionInsight

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB(DWS) 数据库智能监控运维服务介绍
下一篇:高性能算力中心 — NVMe/NVMe-oF
相关文章