FusionInsight 產品 之 preinstall 功能簡介 及 FAQ
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 [ $1 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服務是一個磁盤監控服務,它會對通過它掛載的磁盤進行監控,當磁盤分區丟失或者出現只讀時(磁盤故障)發送告警,并且嘗試修復故障。
它也就是我們常說的磁盤熱插拔服務。
如果用戶沒有通過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小時內刪除侵權內容。