Მაღალი ხელმისაწვდომობა (ჰა) უბრალოდ გულისხმობს სისტემის ხარისხს, რომელიც უნდა მუშაობდეს განუწყვეტლივ დიდი ხნის განმავლობაში უკმარისობის გარეშე. HA გადაწყვეტილებები შეიძლება განხორციელდეს აპარატურის და/ან პროგრამული უზრუნველყოფის გამოყენებით, ხოლო HA– ს განხორციელების ერთ – ერთი საერთო გადაწყვეტა არის კლასტერული.
გამოთვლისას კლასტერი შედგება ორი ან მეტი კომპიუტერისგან (საყოველთაოდ ცნობილია როგორც კვანძები ან წევრები) რომლებიც ერთად ასრულებენ დავალებას. ასეთ კონფიგურაციაში, მხოლოდ ერთი კვანძი უზრუნველყოფს მომსახურებას მეორადი კვანძ (ებ) ით, თუ ის ვერ მოხერხდება.
მტევანი იყოფა ოთხ მთავარ ტიპად:
უზრუნველყოფის კიდევ ერთი ფართოდ გავრცელებული გადაწყვეტა ჰა არის რეპლიკაცია (კონკრეტულად მონაცემთა გამეორება). გამეორება არის პროცესი, რომლის საშუალებითაც ერთი ან მეტი (მეორადი) მონაცემთა ბაზის სინქრონიზაცია შესაძლებელია ერთ ძირითად (ან სამაგისტრო) მონაცემთა ბაზასთან.
კლასტერის დასაყენებლად, ჩვენ გვჭირდება მინიმუმ ორი სერვერი. ამ სახელმძღვანელოს მიზნებისათვის ჩვენ გამოვიყენებთ Linux– ის ორ სერვერს:
ამ სტატიაში ჩვენ ვაჩვენებთ საფუძვლებს, თუ როგორ განვათავსოთ, კონფიგურაცია და შევინარჩუნოთ მაღალი ხელმისაწვდომობა/კლასტერირება Ubuntu 16.04/18.04 და CentOS 7 -ში. ჩვენ ვაჩვენებთ თუ როგორ უნდა დაამატოთ Nginx HTTP სერვისი კლასტერში.
იმისათვის, რომ ორი სერვერი დაუკავშირდეს ერთმანეთს, ჩვენ უნდა დავაკონფიგურიროთ შესაბამისი ადგილობრივი DNS პარამეტრები /etc/hosts ფაილი ორივე სერვერზე.
გახსენით და შეცვალეთ ფაილი თქვენი საყვარელი ბრძანების ხაზის რედაქტორი.
$ sudo vim /etc /host
დაამატეთ შემდეგი ჩანაწერები თქვენი სერვერების ფაქტობრივი IP მისამართებით.
192.168.10.10 node1.example.com. 192.168.10.11 node2.example.com.
შეინახეთ ცვლილებები და დახურეთ ფაილი.
ახლა დააინსტალირეთ Nginx ვებ სერვერი შემდეგი ბრძანებების გამოყენებით.
$ sudo apt დააინსტალირეთ nginx [Ubuntu– ზე] $ sudo yum install epel-release && sudo yum install nginx [On CentOS 7]
ინსტალაციის დასრულების შემდეგ, ახლავე დაიწყეთ Nginx სერვისი და ჩართეთ ჩატვირთვის დროს ავტომატური ჩართვა, შემდეგ შეამოწმეთ მუშაობს თუ არა systemctl ბრძანების გამოყენებით.
Ubuntu– ზე სერვისი ავტომატურად უნდა დაიწყოს პაკეტის წინასწარი კონფიგურაციის დასრულებისთანავე, შეგიძლიათ უბრალოდ ჩართოთ იგი.
$ sudo systemctl ჩართეთ nginx. $ sudo systemctl დაიწყეთ nginx. $ sudo systemctl სტატუსი nginx.
Nginx სერვისის დაწყების შემდეგ, ჩვენ უნდა შევქმნათ პერსონალური ვებ გვერდები ორივე სერვერზე ოპერაციების იდენტიფიკაციისა და ტესტირებისთვის. ჩვენ შევცვლით ნაგულისხმევი Nginx ინდექსის გვერდის შინაარსს, როგორც ნაჩვენებია.
$ echo "ეს არის ნაგულისხმევი გვერდი node1.example.com- ისთვის" | sudo tee /usr/share/nginx/html/index.html #VPS1. $ echo "ეს არის ნაგულისხმევი გვერდი node2.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS2.
შემდეგი, ჩვენ უნდა დავაინსტალიროთ კარდიოსტიმულატორი, კოროსინკიდა ცალი თითოეულ კვანძზე შემდეგნაირად.
$ sudo apt დააინსტალირეთ corosync კარდიოსტიმულატორი ცალი #Ubuntu $ sudo yum დააინსტალირეთ corosync კარდიოსტიმულატორის ცალი #CentOS
ინსტალაციის დასრულების შემდეგ, დარწმუნდით, რომ ცალი დემონი მუშაობს ორივე სერვერზე.
$ sudo systemctl ჩართეთ pcsd. $ sudo systemctl დაიწყეთ pcsd. $ sudo systemctl სტატუსი pcsd.
ინსტალაციის დროს, სისტემის მომხმარებელმა დარეკა "ჰაკლასტერი" იქმნება ასე რომ, ჩვენ უნდა შევქმნათ საჭირო ავთენტიფიკაცია ცალი. დავიწყოთ ახალი პაროლის შექმნით "ჰაკლასტერი" მომხმარებელი, ჩვენ უნდა გამოვიყენოთ ერთი და იგივე პაროლი ყველა სერვერზე:
$ sudo passwd ჰაკლასტერი.
შემდეგი, ერთ -ერთ სერვერზე (Node1), გაუშვით შემდეგი ბრძანება საჭირო ავტორიზაციის დასაყენებლად ცალი.
$ sudo ცალი კლასტერი auth node1.example.com node2.example.com -u hacluster -p password_here --force.
ახლა შექმენით კლასტერი და შეავსეთ იგი რამდენიმე კვანძით (კლასტერის სახელი არ უნდა აღემატებოდეს 15 სიმბოლოს, ამ მაგალითში ჩვენ გამოვიყენეთ მაგალითი კლასტერი) Node1 სერვერზე.
$ sudo ცალი კლასტერის დაყენება -სახელი მაგალითი კლასტერი node1.example.com node2.example.com
ახლა ჩართეთ მტევანი ჩატვირთვისას და დაიწყეთ სერვისი.
$ sudo კომპიუტერების კასეტური ჩართვა -ყველა. $ sudo ცალი კლასტერის დაწყება -ყველა.
ახლა შეამოწმეთ კლასტერული სერვისი მუშაობს თუ არა შემდეგი ბრძანების გამოყენებით.
$ sudo კომპიუტერის სტატუსი. ან $ sudo crm_mon -1.
ზემოაღნიშნული ბრძანების გამომავალიდან ხედავთ, რომ არის გაფრთხილება არა ქვაკუთხედი მოწყობილობები ჯერ კიდევ ქვაკუთხედი ჯერ კიდევ ჩართულია კლასტერში. გარდა ამისა, კლასტერული რესურსები/სერვისები არ არის კონფიგურირებული.
პირველი ვარიანტი არის გამორთვა ქვაკუთხედი (ან ესროლეთ სხვა კვანძს თავში), ფარიკაობის განხორციელება კარდიოსტიმულატორი.
ეს კომპონენტი გეხმარებათ დაიცვათ თქვენი მონაცემები კორუმპირებული წვდომისგან. ამ სახელმძღვანელოს მიზნებისათვის, ჩვენ გავთიშავთ მას, რადგან ჩვენ არ გვაქვს კონფიგურაცია არცერთ მოწყობილობაზე.
Გამორთვა ქვაკუთხედი, გაუშვით შემდეგი ბრძანება:
$ sudo pcs ქონების კომპლექტი stonith-enabled = false.
შემდეგი, ასევე იგნორირება კვორუმი პოლიტიკა შემდეგი ბრძანების გაშვებით:
$ sudo pcs ქონება მითითებული no-quorum-policy = იგნორირება.
ზემოაღნიშნული პარამეტრების დაყენების შემდეგ, გაუშვით შემდეგი ბრძანება, რომ ნახოთ ქონების სია და დარწმუნდეთ, რომ ზემოთ მოყვანილი პარამეტრები, ქვის ქვა და ქვორუმის პოლიტიკა შეზღუდული შესაძლებლობების მქონეა.
$ sudo ცალი ქონების სია.
ამ განყოფილებაში ჩვენ შევხედავთ როგორ დავამატოთ კლასტერული რესურსი. ჩვენ დავაკონფიგურირებთ მცურავ IP- ს, რომელიც არის IP მისამართი, რომელიც შეიძლება მყისიერად გადავიდეს ერთი სერვერიდან მეორეზე იმავე ქსელში ან მონაცემთა ცენტრში. მოკლედ რომ ვთქვათ, მცურავი IP არის ტექნიკური საერთო ტერმინი, გამოიყენება IP– ებისთვის, რომლებიც მკაცრად არ არის დაკავშირებული მხოლოდ ერთ ინტერფეისთან.
ამ შემთხვევაში, იგი გამოყენებული იქნება მაღალი ხელმისაწვდომობის კლასტერში ჩავარდნის მხარდასაჭერად. გაითვალისწინეთ, რომ მცურავი IP– ები არ არის მხოლოდ წარუმატებელი სიტუაციებისთვის, მათ აქვთ რამდენიმე სხვა გამოყენების შემთხვევა. ჩვენ გვჭირდება კლასტერის კონფიგურაცია ისე, რომ კლასტერის მხოლოდ აქტიური წევრი "ფლობს" ან პასუხობს მცურავ IP- ს ნებისმიერ დროს.
ჩვენ დავამატებთ ორ კლასტერულ რესურსს: მცურავი IP მისამართის რესურსი სახელწოდებით "მცურავი_იპი”და რესურსი Nginx ვებ სერვერისთვის სახელწოდებით”http_server”.
პირველი დაიწყეთ floating_ip შემდეგნაირად. ამ მაგალითში, ჩვენი მცურავი IP მისამართი არის 192.168.10.20.
$ sudo ცალი რესურსი ქმნის floating_ip ocf: heartbeat: IPaddr2 ip = 192.168.10.20 cidr_netmask = 24 op მონიტორის ინტერვალი = 60 წ.
სად:
შემდეგ დაამატეთ მეორე რესურსი, სახელწოდებით http_server. აქ არის სერვისის რესურსი აგენტი ocf: გულისცემა: nginx.
$ sudo კომპიუტერის რესურსი ქმნის http_server ocf: heartbeat: nginx configfile = "/etc/nginx/nginx.conf" op მონიტორის დროის გასვლა = "20 წ" ინტერვალი = "60 წ"
მას შემდეგ რაც დაამატეთ კლასტერული სერვისები, გასცეს შემდეგი ბრძანება რესურსების სტატუსის შესამოწმებლად.
$ sudo ცალი სტატუსის რესურსები.
ბრძანების გამომავალს რომ შევხედოთ, ორი დამატებული რესურსი: "მცურავი_იპი" და "Http_server" ჩამოთვლილია Floating_ip სერვისი გამორთულია, რადგან პირველადი კვანძი მუშაობს.
თუ თქვენს სისტემაში ჩართულია firewall, თქვენ უნდა დაუშვათ ყველა ტრაფიკი Nginx და ყველა მაღალი ხელმისაწვდომობის სერვისი ბუხრის საშუალებით კვანძებს შორის სათანადო კომუნიკაციისთვის:
CentOS 7 $ sudo firewall-cmd-მუდმივი --add-service = http. $ sudo firewall-cmd-მუდმივი --add-service = მაღალი ხელმისაწვდომობა $ sudo firewall-cmd-ჩატვირთვა Ubuntu $ sudo ufw ნებადართულია http $ sudo ufw დაუშვას მაღალი ხელმისაწვდომობა $ sudo ufw გადატვირთვა
საბოლოო და მნიშვნელოვანი ნაბიჯი არის იმის შემოწმება, რომ ჩვენი მაღალი ხელმისაწვდომობის დაყენება მუშაობს. გახსენით ბრაუზერი და გადადით მისამართზე 192.168.10.20 თქვენ უნდა ნახოთ ნაგულისხმევი Nginx გვერდი node2.example.com როგორც ნაჩვენებია სკრინშოტში.
წარუმატებლობის სიმულაციისთვის, გაუშვით შემდეგი ბრძანება კლასტერის შესაჩერებლად node2.example.com.
$ sudo ცალი კასეტური გათიშვა http_server.
შემდეგ გადატვირთეთ გვერდი აქ 192.168.10.20ახლა თქვენ უნდა შეხვიდეთ ნაგულისხმევი Nginx ვებ გვერდიდან node1.example.com.
ალტერნატიულად, თქვენ შეგიძლიათ შეცდომის სიმულაცია მოახდინოთ სერვისის პირდაპირ შეწყვეტის გარეშე, კლასტერის შეწყვეტის გარეშე რომელიმე კვანძზე, შემდეგი ბრძანების გამოყენებით ერთ კვანძზე:
$ sudo crm_resource-რესურსი http_server --force-stop
შემდეგ თქვენ უნდა გაიქცეთ crm_mon ინტერაქტიული რეჟიმში (ნაგულისხმევი), მონიტორის ინტერვალით 2 წუთის განმავლობაში, თქვენ უნდა გქონდეთ ხილული კლასტერის შეტყობინება, რომ http_server ვერ მოხერხდა და გადაიტანა სხვა კვანძში.
იმისათვის, რომ თქვენი კლასტერული მომსახურება ეფექტურად იმუშაოს, შეიძლება დაგჭირდეთ გარკვეული შეზღუდვების დაწესება. თქვენ შეგიძლიათ ნახოთ, ცალი man გვერდი (man pcs) ყველა გამოყენების ბრძანების სიისათვის.
დამატებითი ინფორმაციისთვის Corosync და Pacemaker– ის შესახებ, იხილეთ: https://clusterlabs.org/
ამ სახელმძღვანელოში ჩვენ ვაჩვენეთ საფუძვლები, თუ როგორ განვათავსოთ, კონფიგურაცია და შევინარჩუნოთ მაღალი ხელმისაწვდომობა/კლასტერული/რეპლიკაცია Ubuntu 16.04/18.04 და CentOS 7. ჩვენ ვაჩვენეთ, თუ როგორ უნდა დაამატოთ Nginx HTTP სერვისი კლასტერში. თუ თქვენ გაქვთ რაიმე მოსაზრება გასაზიარებლად ან კითხვებზე, გამოიყენეთ ქვემოთ მოცემული გამოხმაურების ფორმა.