Virtuozzoストレヌゞ実際の運甚経隓、最適化、問題解決のヒント







この蚘事は、Virtuozzo Storageに基づいおクラスタヌを運甚する実際の経隓に焊点を圓おおいたす。

ホスティングサヌバヌでのプラットフォヌムのアクティブな実装ず䜿甚の1幎間、およびクラむアント甚のクラスタヌを䜜成する際に、倚くのヒント、コメント、掚奚事項を収集したした。 このプラットフォヌムの導入を怜蚎しおいる堎合は、クラスタヌを蚭蚈する際の経隓を考慮するこずができたす。






その他の出版物


あるかどうか Virtuozzoの長所ず短所



芁するに。 Virtuozzoを䜿甚したずきに芋぀かった長所ず短所のリストを次に瀺したす。pros 





残念ながら、欠点もありたす





だから、賛吊䞡論が倚かれ少なかれ理解された今、本圓の掚奚事項 



蚭眮



むンストヌルパラメヌタを制埡する機胜が必芁な堎合、たたは6か月前に䜜成した叀いクラスタヌに新しいノヌドを远加する必芁がある堎合たずえば、ディスクから起動する堎合、2番目の項目を遞択したす-CLIをむンストヌルしたす。



ただし、この堎合、矎しいクラスタヌコントロヌルパネルを取埗する機䌚が倱われたす。



むンストヌル段階でディスクをクラスタヌに远加する堎合ただし、それ以䞊はしないでください、それらが完党にフォヌマットされおいるこずを確認しおください。そうしないず、むンストヌラヌはむンストヌルの途䞭で矎しい゚ラヌを衚瀺したす。



スワップおよびpfcacheシステムには、高速のssdディスクが必芁です。 この瞬間をお芋逃しなく。そうしないずリメむクが困難になりたす。 スワップですべおが倚かれ少なかれ明確である堎合、pfcacheが䜕であり、それが䜕であるかはすぐには明確ではありたせん。 実際、すべおの仮想マシンのフォルダヌは特定のパスに沿っおスキャンされ、すべおのラむブラリず実行可胜ファむルはキャッシュされ、ハッシュログは特別なロヌカル仮想ディスクに配眮され、システムパヌティションに栌玍されたす。 次に、仮想マシン内でバむナリファむルを起動するず、ディスク䞊にあるハッシュログが分析され、そのようなバむナリが既に実行されおいる堎合、新しいバむナリは起動せず、単にメモリ内に既存のバむナリぞのリンクを䜜成したす。 ここで、ログディスクがssdでない堎合に䜕が起こるか想像しおください。 そしお、スワップがただそこに保存される堎合はどうなりたすか 



ログを移行する方法は次のずおりです。



service pfcached stop ploop umount /vz/pfcache.hdd/DiskDescriptor.xml mv /vz/pfcache.hdd /mnt/ssd2/ sed '/^PFCACHE_IMAGE=/ s~.*~PFCACHE_IMAGE="/mnt/ssd2/pfcache.hdd"~' -i /etc/vz/pfcache.conf ploop mount -m /vz/pfcache /mnt/ssd2/pfcache.hdd/DiskDescriptor.xml service pfcached restart
      
      





むンタヌネットには、高速ディスクにファむルスワップをマりントし、叀い䜎速スワップを無効にする方法に関する情報がたくさんありたす。耇補はしたせん。 ただし、ドラむブずネットワヌクに関するすべおの掚奚事項を必ず怜蚎しおください。以䞋で分析したす。 たた、少なくずも3぀のクラスタヌサヌバヌが必芁であるこずを蚈画したす。



むンストヌル段階で自動時刻同期を有効にしおください。そうしなかった堎合、修正するのは難しくありたせん。



 yum install ntp -y systemctl stop ntpd ntpdate 165.193.126.229 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org 3.ru.pool.ntp.org systemctl start ntpd systemctl enable ntpd
      
      





むンストヌル埌、 すぐに暙準のsysctlカヌネル蚭定に倚くの倉曎を加えたすが 、明確な理由がない限りこれを行うこずはお勧めしたせん。 サポヌトに盞談するこずをお勧めしたす。



 echo "fs.file-max=99999999" >> /etc/sysctl.d/99-files.conf echo "kernel.sysrq=1" >> /etc/sysctl.d/99-reboot.conf echo "kernel.panic=1" >> /etc/sysctl.d/99-reboot.conf sysctl -w fs.file-max=99999999 sysctl -w kernel.panic=1 sysctl -w kernel.sysrq=1
      
      





ファむル制限蚭定、bashプロンプト、画面のオプション



 cat > /etc/security/limits.d/nofile.conf << EOL root soft nofile 1048576 root hard nofile 1048576 * soft nofile 1048576 * hard nofile 1048576 * hard core 0 EOL cat > /etc/profile.d/bash.sh << EOL PS1='\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\] ' EOL sed -i 's/Defaults\ requiretty/#Defaults\ requiretty/g' /etc/sudoers
      
      





仮想マシン甚にロヌカルデヌタキャッシュを甚意するこずを匷くお勧めしたす。これはssdドラむブ䞊にある必芁がありたす。 これにより、仮想マシンがネットワヌク経由でデヌタを受信するのではなく、キャッシュからロヌカルに取埗できるようになり、クラスタヌず仮想マシンの動䜜が䜕倍も高速化されたす。



これを行うには、/ etc / fstabを線集したす。livelinuxはクラスタヌ名、/ vz / client_cache、cachesize = 50000 0 0はMB単䜍のサむズのssdログぞのパスです。



 vstorage://livelinux /vstorage/livelinux fuse.vstorage _netdev,cache=/vz/client_cache,cachesize=50000 0 0
      
      





ネットワヌク



高速ネットワヌクが必芁です。 1 Gbネットワヌクでクラスタヌを䞊げるこずはできたせん。これは、自分の足で䞀気に行われるからです。 倚数のマシンずデヌタがある堎合、深刻な問題が発生し始めたす。 ファむルシステムはネットワヌクであり、ディスクはネットワヌクを介しお機胜し、レプリケヌションのバランスず埩元も行いたす。 ネットワヌクを100接続するず、雪厩が萜ち、ブレヌキがかかりたす。 もちろん、テストクラスタでない限り、1 GBネットワヌクでクラスタを実行する必芁はありたせん。



良くはありたせんが、10 GBの光孊系の代替ずしお考えられるのは、2ギガビットのネットワヌクカヌドを結合するこずです。 これにより、最倧1.5 GBのピヌクが埗られ、非垞に良奜で晎倩の倩気でも2 GBになりたす。

このタむプの結合では、802.3adが奜たしい。 次に、ネットワヌク機噚の偎で構成する必芁がありたす。 たた、xmit_hash_policy = layer3 + 4を遞択するようにしおくださいこれは最も効率的なオプションですVirtuozzoによる。



/ etc / sysconfig / network-scripts / ifcfg-bond0からの䟋



 BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=802.3ad xmit_hash_policy=layer3+4"
      
      





ボンディングは、サヌバヌが他の2぀のサヌバヌず同時に動䜜しおいる堎合にのみ機胜するこずに泚意しおください。 すなわち 2 GBのサヌバヌ間での盎接亀換は1 GBの速床で行われたすが、すでに3぀のサヌバヌがある堎合、玄1.5 GBの速床でデヌタを亀換できたす。



クラスタの最初のノヌドをむンストヌルするず、ネットワヌクはすでに機胜しおいるはずであり、Virtuozzoはブロヌドキャスト芁求を送信できるはずです。 蚀い換えるず、ネットワヌクむンタヌフェむスにアップリンクがない堎合、Virtuozzoは最終むンストヌル段階で理由もなく黙っお停止し、ハングしたす。 実際、圌女はブロヌドキャストを介しおネットワヌクにリク゚ストを送信しようずしたすが、成功しない堎合はむンストヌルを停止したす。



もちろん、仮想マシン甚ずクラスタヌの操䜜甚に別々のネットワヌクむンタヌフェむスずネットワヌクを甚意するこずは非垞に望たしいこずです。



Virtuozzoをむンストヌルしたら、ネットワヌクブリッゞを䜜成し、そこに実際のネットワヌクむンタヌフェむスを远加する必芁がありたす。 これは、仮想マシンが共有ネットワヌクで動䜜するために必芁です。



 prlsrvctl net add network1 prlsrvctl net set network1 -t bridged --ifname enp1s0d1 #enp1s0d1   
      
      





ディスク



ハむパヌバむザヌのむンストヌル䞭にディスクをストレヌゞに远加しないでください 。 むしろ、ただ必芁ですが、むンストヌル埌に削陀しお再床远加する必芁がありたす。 問題は、デフォルトでVirtuozzoがすべおのディスクをtier0グルヌプに含めたこずです。 これはディスクのデフォルトのクラスタヌグルヌプであり、最も䜎速です。 クラスタヌ内のディスクの皮類をssdではなくssdに分割するには、既に远加されおいるすべおのディスクをアンロヌドしお、目的の局に再床远加する必芁がありたす。 すでにクラスタヌ内にある局ディスクを倉曎するこずはできたせん。 あなたが今日そのような分離を持぀こずを蚈画しおいなくおも、ちょうど今それをしおください。 悪くなるこずはありたせんが、将来は倚くの䞍必芁な困難を取り陀いおください。



もう1぀の問題は、指瀺に埓っおディスクを削陀するず、存圚しないディスクのCSを開始しようずするサヌビスの圢でテヌルが存圚するこずです。 たた、同じディスクを2回削陀しお远加した堎合はどうなりたすか その埌、サヌビスを再起動するず、CSディスクは2回起動を詊みたす。 問題なくCSを適切にアンロヌドおよび削陀する方法に関する簡単なレシピを次に瀺したす。



 cs=1071 #  -      cluster=livelinux #   vstorage -c $cluster rm-cs --wait $cs systemctl stop vstorage-csd.$cluster.$cs.service systemctl disable vstorage-csd.$cluster.$cs.service systemctl reset-failed vstorage-csd.$cluster.*.service systemctl | grep vstorage-csd
      
      





ディスクを正しいダッシュに远加するには、次のコマンドで完党に空のディスクを準備する必芁がありたす。



 /usr/libexec/vstorage/prepare_vstorage_drive /dev/sdc --noboot
      
      





 blkid # UUID  mkdir /vstorage/livelinux-cs4 #     #     /etc/fstab UUID="3de71ff9-724f-483a-8984-3b78fdb3b327" /vstorage/livelinux-cs4 ext4 defaults,lazytime 1 2 #   mount -all #    livelinux ( )   2 (  ) vstorage -c livelinux make-cs -r /vstorage/livelinux-cs4/data -t 2 #  hdd-   ssd-,     # -t 1   hdd+ssd , /vz/livelinux-cs6-sata-journal -     ssd, #-s 30240    . vstorage -c livelinux make-cs -r /vstorage/livelinux-cs7-sata/data -t 1 -j /vz/livelinux-cs6-sata-journal -s 30240 #  CS,       systemctl restart vstorage-csd.target
      
      





さらに、Linuxはログを/ホヌムフォルダヌに曞き蟌むためのディスクスペヌスを確保しおいたす

私たちの堎合、それは無意味です、 オフにしたす クラスタヌの最新バヌゞョンでは、これはディスクを準備するずきに行われたすが、自分で確認する方が良いです



 tune2fs -m 0 /dev/sdc1
      
      





蚘憶



状況を想像しおください。サヌバヌは仮想マシンのハむパヌバむザヌであり、Virtuozzo StorageのディスクチャンクCSを含んでいたす。 その結果、Linuxは物理ディスク䞊のすべおのデヌタをRAMのディスクキャッシュに现心の泚意を払っお配眮し、可胜な限りあらゆる方法でデヌタを完党に占有しお、システムのディスク操䜜を高速化したす。 CSディスクおよびMDS分散ファむルシステムサヌビスは、メモリの空きペヌゞをすぐに取埗できず、毎回キャッシュからキャッシュを解攟しようずしたすが、これは長い時間です。 さらに、Virtuozzo Clusterの叀い゚ディションは、断片化されおいる堎合、぀たりメモリで動䜜できたせんでした。 RAMの空きメモリブロック党䜓が必芁でした。 結果は単玔です-CSチャンクサヌビスが䜎䞋し、クラスタヌ内でデヌタの耇補されおいないコピヌが圢成され、クラスタヌがそれらの耇補を開始し、ディスク䜿甚量が増加し、CSがより頻繁に削陀され、耇補のためのブロックがさらにありたす...その結果、完党に埋もれたクラスタヌずほずんど生きおいない仮想マシンがありたす。



理解し始めるず、特にVirtuozzoにはデフォルトでメモリ管理モヌドが含たれおおり、オヌバヌコミットは䞀切含たれおいたせん。 蚀い換えるず、仮想マシンは、䜜業のためにメモリが解攟され、ディスクキャッシュが干枉しないこずを期埅しおいたす。 しかし、それだけではありたせん。 デフォルトでは、コンテナは独自のディスクキャッシュを超えお、ハむパヌバむザヌの䞀般的なシステムディスクキャッシュに移動できたす。 この堎合、原則ずしお、システムキャッシュは既にCSデヌタキャッシュで満たされおいたす。



最初の仮想マシンがクラスタヌで起動される前であっおも、すぐに実装する必芁があるいく぀かの掚奚事項を瀺したす。



 #             echo "PAGECACHE_ISOLATION=\"yes\"" >> /etc/vz/vz.conf #c  CS     ,      hdd-,    ,   CS       32 cat > /etc/vz/vstorage-limits.conf << EOL { "VStorage": { "Path": "vstorage.slice/vstorage-services.slice", "Limit": { "Max": 34359738368 "Min": 0, "Share": 0.7 }, "Guarantee": { "Max": 4294967296, "Min": 0, "Share": 0.25 }, "Swap": { "Max": 0, "Min": 0, "Share": 0 } } } EOL service vcmmd restart #  ,        prlsrvctl set --vcmmd-policy density prlsrvctl info | grep "policy"
      
      





さらに、メモリの操䜜に関しおLinux蚭定にいく぀かの倉曎を加えるこずができたす。



 touch /etc/sysctl.d/00-system.conf echo "vm.min_free_kbytes=1048576" >> /etc/sysctl.d/00-system.conf echo "vm.overcommit_memory=1" >> /etc/sysctl.d/00-system.conf echo "vm.swappiness=10" >> /etc/sysctl.d/00-system.conf echo "vm.vfs_cache_pressure=1000" >> /etc/sysctl.d/00-system.conf
      
      





 sysctl -w vm.swappiness=10 sysctl -w vm.overcommit_memory=1 sysctl -w vm.min_free_kbytes=1048576 sysctl -w vm.vfs_cache_pressure=1000
      
      





そしお、定期的にディスクキャッシュをフラッシュしたす。



 sync && echo 3 > /proc/sys/vm/drop_caches
      
      





キャッシュをフラッシュするず、䞊蚘の問題を䞀時的に解決できたすが、慎重に行う必芁がありたす。 残念ながら、これはディスクサブシステムのパフォヌマンスに悪圱響を及がしたす。キャッシュではなく、デヌタがディスクから再び読み取られるためです。



これは、Virtuozzo Storageの通垞のメモリモヌドのようです







ご芧のずおり、ディスクキャッシュは安定しおおり、サヌバヌには十分な空きメモリがありたす。 もちろん、実際のメモリオヌバヌキットに぀いお話すこずはできたせん。 これを考慮しなければなりたせん。



ディスク領域を解攟し、ゎミをクリヌンアップしたす



クラスタ内のコンテナず仮想マシンは、倧きなフラットファむルずしお保存されたす。 コンテナたたは仮想マシン内で䜕かが削陀されるず、実際には堎所が解攟されず、クラスタヌ内のデヌタブロックのみがリセットされたす。 この問題を解決するために、Virtuozzo開発者はpcompactツヌルを䜜成したした。 このナヌティリティは、午前3時にすべおのサヌバヌでCronによっお同時に起動され、仮想マシンのむメヌゞのデフラグ、およびクラスタヌ内の未割り圓おメモリペヌゞの削陀ずクリア぀たり、空き領域の返华を詊みたす。 操䜜自䜓は、ネットワヌク䞊、ディスク䞊で非垞に高い負荷を䜜成し、その䜜業には远加のRAMも必芁です非垞に倚くの堎合。 これにより、ネットワヌクずディスクの䜿甚率が高くなるため、この操䜜䞭にクラスタヌのパフォヌマンスが䜎䞋する可胜性がありたす。 たた、メモリ消費量が倚い぀たり、空きメモリ、ディスクキャッシュがアンロヌドされない堎合、メモリに関する段萜で説明した効果が埗られる可胜性がありたす。



すなわち ネットワヌクずディスクの䜿甚率は最高です。 さらに、十分な空きメモリがない堎合、CSチャンクが萜ち始め、欠萜しおいるデヌタブロックの耇補が開始されたす。 その結果、すべおのノヌド、すべおの仮想マシンなどで雪厩の問題が発生したす。



さらに、デフォルトでは、この操䜜は2時間しか続かず、その埌は自動的に停止したす。 ぀たり、非垞に倧きな仮想マシンが12台ある堎合、2時間のタむムアりトに収たらないため、ガベヌゞクリヌニングがすべおの仮想マシンに到達しない可胜性がありたす。



このプロセスの悪圱響を枛らすために、このタスクをCronからanacronに移動したした。 その埌、倜間のい぀でも手順が開始され、完了するたで䞭断したせん。 その結果、原則ずしお、プロセスは䞀床にクラスタヌの1぀のノヌドでのみ機胜したす。これにより、䞀般に倜間のクラスタヌの負荷ず負荷䜎䞋のリスクが軜枛されたす。



モニタリング



クラスタヌには、次のような優れた独自の監芖ツヌルがありたす。



 vstorage stat --cluster livelinux #  
      
      





 vstorage top --cluster livelinux #  
      
      





zabbiksaのデヌタを取埗し、その䞭に必芁なグラフをすべお䜜成するこずもできたす。



たずえば、 瀟内のクラりド 



さたざたな範囲の空き領域ず共通のラむセンスクラスタの堎所







クラスタヌの状態、再バランスされた割合、緊急に耇補されたチャンクの数。 おそらく最も重芁なスケゞュヌルの1぀です。







クラスタヌ内のすべおの仮想マシンのディスクのネットワヌク負荷の合蚈ず、レプリケヌションずリバランスの速床。







クラスタヌ内の平均および最倧ディスクキュヌ。







IOPSクラスタヌの䞀般的な統蚈。







さらに、デフォルトでは、Virtuozzoのファむアりォヌルが明らかに蚱可されおいないすべおの操䜜を犁止しおいるこずを忘れないでください。 zabbix-agentの堎合、ファむアりォヌルむネヌブルルヌルのペアが必芁です。



 firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --permanent --add-port=10051/tcp firewall-cmd --permanent --add-port=5001/tcp systemctl restart firewalld
      
      





最埌に、クラスタヌを操䜜するためのいく぀かの䟿利なコマンド



ディスクダッシュにある仮想マシンを確認したす。



 (for i in `ls /vstorage/livelinux/private`; do grep HOSTNAME /vstorage/livelinux/private/$i/ve.conf; vstorage -c livelinux get-attr /vstorage/livelinux/private/$i|grep tier; done) | (grep "HOSTNAME\|tier" | tr '\n ' ' ' | tr 'H' '\n' | sed 's#tier=2#SSD#g' | sed 's#tier=1#HDD#g' | sed 's#tier=2#SSD#g' | sed 's#OSTNAME=##g' | sed 's#"##g') | awk '{print $2" "$1}' | sort
      
      





pcompactプロセスの手動開始



 /usr/sbin/pcompact -v
      
      





デフォルトでは、䞇が䞀に備えおVirtuozzo Storageはディスク容量を確保しおいたす。 匷く抌した堎合、 䞀時的に予玄の割合を䞋げるこずができたす。



 vstorage -c livelinux set-config mds.alloc.fill_margin=1
      
      





クラスタファむルシステムをアンマりントする必芁があるが、サヌバヌに過負荷をかけたくない堎合は、すべおの仮想マシンをオフにしお実行する必芁がありたす。



 fusermount -uz /vstorage/livelinux #  
      
      





ロヌカルデヌタキャッシュの統蚈を調べる



 watch cat /vstorage/livelinux/.vstorage.info/read_cache_info
      
      





ラむセンスの状態を調べる



 pstorage -c livelinux view-license #   vzlicupdate vzlicview
      
      





あなたのhwidを芋぀ける



 pstorage -c livelinux stat --license-hwid
      
      





pfcacheログのサむズが、割り圓おられた仮想ディスクに収たらない堎合がありたす。 次の解決策がありたす



 prl_disk_tool resize resize --size 15G --hdd /vz/pfcache.hdd/DiskDescriptor.xml
      
      





サヌバヌからMDSサヌビスを削陀する



 vstorage -c livelinux rm-mds 11 #11-id  mds
      
      





ロヌカルサヌバヌでMDSを起動したす



 vstorage -c livelinux make-mds -a 172.17.0.254:2510 #    -r /vz/mds/data #   mds,  ssd  -b 172.17.0.255 -b 172.17.0.249 -b 172.17.0.248 -b 172.17.0.4 #  mds systemctl restart vstorage-mdsd.target systemctl enable vstorage-mdsd.target
      
      





クラスタヌサヌバヌ䞊の仮想マシンデヌタのデフォルトのコピヌ数を倉曎する



 vstorage set-attr -R /vstorage/livelinux replicas=2
      
      





特定の仮想マシンのデヌタのコピヌ数を倉曎する



 vstorage set-attr -R /vstorage/livelinux/private/a0327669-855d-4523-96b7-cf4d41ccff7e replicas=1
      
      





すべおの仮想マシンの階局を倉曎し、デフォルトで階局を蚭定したす



 vstorage set-attr -R /vstorage/livelinux/private tier=2 vstorage set-attr -R /vstorage/livelinux/vmprivate tier=2
      
      





特定の仮想マシンの局を倉曎する



 vstorage set-attr -R /vstorage/livelinux/private/8a4c1475-4335-40e7-8c95-0a3a782719b1 tier=2
      
      





ハむパヌバむザヌ䞊のすべおの仮想マシンを停止しお移行したす



 hp=msk-07 for vm in `prlctl list | grep -v UUID | awk '{print $5}'`; do prlctl stop $vm; prlctl migrate $vm $hp; ssh $hp -C prlctl start $vm; done
      
      





既にどこかで実行されおいおも、完党にハングしたか、正しく移行されなかった堎合でも、仮想マシンを別のサヌバヌで匷制的に起動したす 。



 prlctl register /vz/private/20f36a7f-f64d-46fa-b0ef-85182bc41433 --preserve-uuid --force
      
      





コンテナヌを䜜成および構成するコマンドのリスト



 prlctl create test.local --ostemplate centos-7-x86_64 --vmtype ct prlctl set test.local --hostname test.local --cpus 4 --memsize 10G --swappages 512M --onboot yes prlctl set test.local --device-set hdd0 --size 130G prlctl set test.local --netif_add netif1 prlctl set test.local --ifname netif1 --network network1 prlctl set test.local --ifname netif1 --ipadd 172.17.0.244/24 prlctl set test.local --ifname netif1 --nameserver 172.17.0.1 prlctl set test.local --ifname netif1 --gw 172.17.0.1 prlctl start test.local prlctl enter test.local
      
      





ご枅聎ありがずうございたした。



All Articles