信創伺服器遷移注意事項

济南小老虎發表於2024-06-10

信創伺服器遷移注意事項


背景

隨著國家隊信創要求的越來越高
很多應用都需要遷移到信創伺服器上面了.
遷移過程中最好是能夠進行一些基礎設定
可以儘可能的避免遷移後的問題
提高產品的功能,效能與易用性. 

核心觀點

遷移其實是一個騰籠換鳥的過程
務必在正式遷移之前進行一些效能測試.
有條件的進行穩定性驗證. 烤機驗證.
遷移一定要有合適的停機視窗
和詳細的遷移規劃. 
避免遷移過程中出現異常問題.
需要協調業務部門,運維部門,以及專案開發部門協助
做好預案, 留好測試和驗證的時間.

環境核心資訊確認

1. 時區
2. 字型
3. 語言
4. 磁碟空間
5. 記憶體大小
6. CPU型號
7. 系統版本
8. nofile,nproc限制.
9. selinux限制.
10.使用者屬主目錄許可權.
11.client-app-db網路互通性
12.部分核心引數驗證.
13.系統漏洞確認與升級.
14.根據業務系統劃分機器名以及新增基礎監控到監控平臺.

基礎資訊獲取

效能資料獲取
建議可以採用sysbench 主要可以測試如下幾個方面
yum install sysbench -y 後:
CPU: 主要是計算能力, 需要說明,不同架構對比意義不大.並且實際效能跟快取和IPC關係更大
sysbench --time=60 --threads=4 --report-interval=3  --cpu-max-prime=10000 cpu  run
記憶體: 讀寫兩種情況以及順序和隨機兩種方式進行驗證. 
sysbench --threads=8 --time=60 --report-interval=10  --memory-block-size=8K --memory-total-size=4096G --memory-access-mode=seq --memory-oper=write memory  run
sysbench --threads=8 --time=60 --report-interval=10  --memory-block-size=8K --memory-total-size=4096G --memory-access-mode=rnd --memory-oper=write memory  run
sysbench --threads=8 --time=60 --report-interval=10  --memory-block-size=8K --memory-total-size=4096G --memory-access-mode=seq --memory-oper=read memory  run
sysbench --threads=8 --time=60 --report-interval=10  --memory-block-size=8K --memory-total-size=4096G --memory-access-mode=rnd --memory-oper=read memory  run
磁碟: 可以在需要測試的分割槽進行測試. fileio prepare可以用來生成檔案 run 進行測試. 
sysbench fileio --threads=8 --report-interval=2 --time=10 --file-num=32 --file-total-size=1G --file-test-mode=rndrw prepare
sysbench fileio --threads=8 --report-interval=2 --time=10 --file-num=32 --file-total-size=1G --file-test-mode=rndrw run
可以透過redis-benchmark 簡單獲取硬體基準資訊:
./redis-benchmark -h 127.0.0.1 -p 6379 -a Test@xxxxxxxx -n 100000 -c 20 -q

建議:
收到伺服器後需要進行一次 基礎效能壓測. 
後續可以定期進行一些測試,驗證伺服器有否嚴重的效能下降.
如果突然伺服器出現卡頓, 則應該執行基準測試
保證不是伺服器基礎效能出現問題導致. 

核心引數調優

# 需要說明, 引數配置建議都進行驗證
# 沒有完全可以一套配置打遍天下的設定. 
# 檔案系統相關調優
vm.swappiness=10
vm.min_free_kybtes=5,242,880
vm.vfs_cache_pressure=200
vm.dirty_background_ratio=5
vm.dirty_ratio=10
vm.dirty_expire_centisecs=1500
vm.dirty_writeback_centisecs=300

# 網路層相關最佳化引數
net.ipv4.tcp_fin_timeout = 6
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.ip_local_port_range = 1025 61000
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_rmem = 10240 87380 12582912 
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.rmem_default = 6291456
net.core.wmem_default = 6291456
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 1800

關於資料庫的相關配置

1. 必須有備份
2. 必須有異地備份
3. 重要資料必須有類似data guard的實時備份.
4. 重要資料必須有定期資料庫備份回覆演練的驗證. 

資料庫的記憶體配置和儲存配置是所有配置裡面最關鍵的.

CPU的配置基本上是跟序列號和工作執行緒數相關. 
這一塊需要與資料庫廠商確認. 

記憶體配置 主要目標是開啟大頁, 合理的規範記憶體的使用情況
資料庫建議都是專用機器, 不建議與其他可能有大量磁碟讀寫記憶體讀寫的應用在一起.
記憶體配置建議留下必要的系統和快取檔案使用的之外交由資料庫來管理.
如果有大量使用swap的情況務必要進行分析, 避免資料庫效能斷崖式下降. 

儲存配置主要是確認儲存的裝置以及最佳化情況
底層儲存裝置的型別, 是 hdd, 是 ssd 是 sata-ssd還是nvme-ssd 還是 pmem. 
如果是高階儲存, 主要是LUN的數量設定, 控制器的配置, 以及多路徑訪問網路延遲等.
如果是本地檔案系統, 那麼raid設定, raid級別, 是否啟用快取.是否有電池都很關鍵.
檔案系統的系統檔案格式. 掛載引數, 

資料庫一定要定期獲取 類似於oracle的awr報告.
並且有定期告警的功能, 避免資料庫出現異常. 

關於安全與升級

信創系統一般都是公司採購的, 需要與資料庫廠商聯絡
建議在系統交付之前將可能的bug,以及安全漏洞進行告知.

最好在運維組建立虛擬機器映象clone之前就進行調優和設定. 
將安全補丁進行更新, 後再進行分發,
比如非常常見的:
audit的導致記憶體佔用過多的bug
以及最近剛出現的.libkysec-core-1.0.1-16.se.10.ky10
低於此版本可能存在安全問題的情況. 

簡單總結

伺服器的效能基線和安全基線的設定很重要.
引數配置也很重要.
但是很難有一套各種模式下都可以使用的引數配置.
所以建議還是獨立的配置測試
保證產品的穩定性. 

相關文章