Date: Desember 20, 2018
Tag: AWS, Linux failover cluster, MySQL
Langkah-demi-Langkah: Cara Mengonfigurasi Cluster Failover Linux Di Amazon EC2 Tanpa Penyimpanan Bersama #amazon #aws #sanless #cluster
Dalam panduan langkah demi langkah ini saya akan membawa Anda melalui semua langkah yang diperlukan untuk mengonfigurasi kluster MySQL 2-simpul yang sangat tersedia (plus server saksi) di Cloud Compute Cloud Amazon (Amazon EC2). Panduan ini mencakup screenshot, perintah shell dan cuplikan kode sebagaimana mestinya. Saya berasumsi bahwa Anda agak akrab dengan Amazon EC2 dan sudah memiliki akun. Jika tidak, Anda dapat mendaftar hari ini. Saya juga akan berasumsi bahwa Anda memiliki keterampilan administrasi sistem linux dasar serta memahami konsep pengelompokan failover dasar seperti Virtual IP, dll.
Penafian: Cloud adalah target yang bergerak cepat. Dengan demikian, fitur / layar / tombol akan berubah seiring waktu sehingga pengalaman Anda mungkin sedikit berbeda dari apa yang Anda lihat di bawah. Sementara panduan ini akan menunjukkan kepada Anda bagaimana membuat database MySQL sangat tersedia, Anda pasti dapat menyesuaikan informasi dan proses ini untuk melindungi aplikasi atau database lain, seperti SAP, Oracle, PostgreSQL, server file NFS, dan banyak lagi. Ini adalah langkah-langkah tingkat tinggi untuk membuat basis data MySQL yang sangat tersedia dalam Amazon EC2:
- Buat Virtual Private Cloud (VPC)
- Buat Gateway Internet
- Buat Subnet (Zona Ketersediaan)
- Konfigurasi Tabel Rute
- Konfigurasikan Grup Keamanan
- Contoh Peluncuran
- Buat IP Elastis
- Buat Entri Rute untuk IP Virtual
- Nonaktifkan Sumber / Dest Memeriksa untuk ENI
- Dapatkan ID Kunci Akses dan Kunci Akses Rahasia
- Konfigurasi OS Linux
- Instal Alat API EC2
- Instal dan Konfigurasikan MySQL
- Instal dan Konfigurasikan Cluster
- Uji Konektivitas Cluster
Ikhtisar
Artikel ini akan menjelaskan cara membuat kluster dalam satu wilayah Amazon EC2. Node kluster (node1, node2 dan server saksi) akan berada di Zona Ketersediaan yang berbeda untuk ketersediaan maksimum. Ini juga berarti bahwa node akan berada di subnet yang berbeda. Konfigurasi akan terlihat seperti ini: Alamat IP berikut akan digunakan:
- node1: 10.0.0.4
- node2: 10.0.1.4
- saksi: 10.0.2.4
- virtual / "mengambang" IP: 10.1.0.10
Buat Awan Pribadi Virtual (VPC)
Pertama, buat Virtual Private Cloud (alias VPC). VPC adalah jaringan terisolasi dalam cloud Amazon yang didedikasikan untuk Anda. Anda memiliki kontrol penuh atas hal-hal seperti blok alamat IP dan subnet, tabel rute, grup keamanan (yaitu firewall), dan banyak lagi. Anda akan meluncurkan mesin virtual Azure Iaas (VMs) ke dalam Jaringan Virtual Anda. Dari dasbor AWS utama, pilih "VPC" Di bawah "VPC Anda", pastikan Anda telah memilih wilayah yang tepat di kanan atas layar. Dalam panduan ini, wilayah "AS Barat (Oregon)" akan digunakan, karena merupakan wilayah yang memiliki 3 Zona Ketersediaan. Untuk informasi lebih lanjut tentang Kawasan dan Zona Ketersediaan, klik di sini Beri nama VPC, dan tentukan blok IP yang ingin Anda gunakan. 10.0.0.0/16 akan digunakan dalam panduan ini: Anda sekarang akan melihat VPC yang baru dibuat pada layar "Your VPCs":
Buat Sebuah Gateway Internet
Selanjutnya, buat Gateway Internet. Ini diperlukan jika Anda ingin Instances (VMs) Anda dapat berkomunikasi dengan internet. Di menu sebelah kiri, pilih Gateway Internet dan klik tombol Buat Gateway Internet. Beri nama, dan buat: Selanjutnya, lampirkan gateway internet ke VPC Anda: Pilih VPC Anda, dan klik Lampirkan:
Buat Subnet (Zona Ketersediaan)
Selanjutnya, buat 3 subnet. Setiap subnet akan berada di Zona Ketersediaannya sendiri. 3 Instance (VMs: node1, node2, witness) akan diluncurkan ke dalam subnet terpisah (dan oleh karena itu Zona Ketersediaan) sehingga kegagalan Zona Ketersediaan tidak akan mengambil beberapa simpul dari gugus. Wilayah AS Barat (Oregon), alias us-west-2, memiliki 3 zona ketersediaan (us-west-2a, us-west-2b, us-west-2c). Buat 3 subnet, satu di masing-masing dari 3 zona ketersediaan. Di bawah VPC Dashboard, navigasikan ke Subnet, lalu buat Subnet: Beri nama subnet pertama ("Subnet1)", pilih zona ketersediaan us-west-2a, dan tentukan blok jaringan (10.0.0.0/24): Ulangi untuk buat zona ketersediaan subnet kedua us-west-2b: Ulangi untuk membuat subnet ketiga di zona ketersediaan us-west-2c: Setelah selesai, verifikasi bahwa 3 subnet telah dibuat, masing-masing dengan blok CIDR yang berbeda, dan dalam Ketersediaan terpisah Zona, seperti terlihat di bawah:
Konfigurasi Tabel Rute
Perbarui tabel rute VPC sehingga lalu lintas ke dunia luar dikirimkan ke Gateway Internet yang dibuat pada langkah sebelumnya. Dari Dasbor VPC, pilih Tabel Rute. Buka tab Rute, dan secara default hanya satu rute akan ada yang memungkinkan lalu lintas hanya dalam VPC. Klik Edit: Tambahkan rute lain: Tujuan rute baru adalah "0.0.0.0/0" (internet) dan untuk Target, pilih Internet Gateway Anda. Kemudian klik Simpan: Selanjutnya, kaitkan 3 subnet dengan Tabel Rute. Klik tab “Asosiasi Subnet”, dan Edit: Centang kotak di sebelah ketiga subnet, dan Simpan: Verifikasikan bahwa 3 subnet dikaitkan dengan tabel rute utama: Nanti, kami akan kembali dan memperbarui Tabel Rute sekali lagi, mendefinisikan rute yang akan memungkinkan lalu lintas untuk berkomunikasi dengan IP Virtual kluster, tetapi ini harus dilakukan SETELAH linux Instances (VMs) telah dibuat.
Konfigurasikan Grup Keamanan
Edit Grup Keamanan (firewall virtual) untuk memungkinkan lalu lintas SSH dan VNC yang masuk. Keduanya nantinya akan digunakan untuk mengkonfigurasi instance linux serta instalasi / konfigurasi dari perangkat lunak cluster. Di menu sebelah kiri, pilih "Grup Keamanan" lalu klik tab "Inbound Rules". Klik Edit: Tambahkan aturan untuk SSH (port 22) dan VNC. VNC umumnya menggunakan port di 5900, tergantung bagaimana Anda mengkonfigurasinya, jadi untuk keperluan panduan ini, kami akan membuka kisaran port 5900-5910. Konfigurasikan sesuai berdasarkan pengaturan VNC Anda:
Contoh Peluncuran
Kami akan menyediakan 3 Mesin Virtual di dalam panduan ini. Dua VM pertama (disebut "node1" dan "node2") akan berfungsi sebagai node klaster dengan kemampuan untuk membawa database MySQL dan sumber daya terkait secara online. VM ketiga akan bertindak sebagai server saksi cluster untuk perlindungan tambahan terhadap split-brain. Untuk memastikan ketersediaan maksimum, ketiga VM akan dikerahkan ke Zona Ketersediaan yang berbeda dalam satu wilayah. Ini berarti setiap instance akan berada di subnet yang berbeda. Pergi ke dashboard AWS utama, dan pilih EC2:
Buat "node1"
Buat instance pertama Anda ("node1"). Klik Launch Instance: Pilih distribusi linux Anda. Perangkat lunak cluster yang digunakan kemudian mendukung RHEL, SLES, CentOS dan Oracle Linux. Dalam panduan ini kita akan menggunakan RHEL 7.X: Ukuran instance Anda sesuai. Untuk keperluan panduan ini dan untuk meminimalkan biaya, ukuran t2.micro digunakan karena tingkat bebas memenuhi syarat. Lihat di sini untuk informasi lebih lanjut tentang ukuran dan harga contoh. Selanjutnya, konfigurasikan detail instance. PENTING: pastikan untuk meluncurkan instance pertama ini (VM) ke "Subnet1", dan tentukan alamat IP yang valid untuk subnet (10.0.0.0/24) – di bawah 10.0.0.4 dipilih karena ini adalah IP gratis pertama di subnet. CATATAN: .1 / .2 / .3 di setiap subnet yang diberikan dalam AWS dicadangkan dan tidak dapat digunakan. Selanjutnya, tambahkan disk ekstra ke node cluster (ini akan dilakukan pada "node1" dan "node2"). Disk ini akan menyimpan database MySQL kami dan kemudian direplikasi antara node. Catatan: Anda TIDAK perlu menambahkan disk ekstra ke node “saksi”. Hanya "node1" dan "node2". Tambahkan Volume Baru, dan masukkan dalam ukuran yang diinginkan: Tentukan Tag untuk instance, Node1: Kaitkan instance dengan grup keamanan yang ada, sehingga aturan firewall yang dibuat sebelumnya akan aktif: Klik Luncurkan: PENTING: Jika ini adalah instance pertama di lingkungan AWS Anda, Anda harus membuat pasangan kunci baru. File kunci pribadi perlu disimpan di lokasi yang aman karena akan diperlukan ketika Anda SSH ke instance linux
Buat "node2"
Ulangi langkah-langkah di atas untuk membuat instance linux kedua Anda (node2). Konfigurasikan persis seperti Node1. Namun, pastikan Anda menerapkannya ke "Subnet2" (zona ketersediaan kami-barat-2b). Rentang IP untuk Subnet2 adalah 10.0.1.0/24, jadi IP 10.0.1.4 digunakan di sini: Pastikan untuk menambahkan disk ke-2 ke Node2 juga. Ukurannya harus persis sama dengan disk yang Anda tambahkan ke Node1: Beri tag kedua contoh…. "Node2":
Buat "saksi"
Ulangi langkah-langkah di atas untuk membuat instance linux ketiga Anda (saksi). Konfigurasikan persis seperti Node1 & Node2, KECUALI Anda TIDAK perlu menambahkan disk kedua, karena hal ini hanya akan bertindak sebagai saksi bagi kluster, dan tidak akan pernah menghadirkan MySQL secara daring. Pastikan Anda menerapkannya ke "Subnet3" (zona ketersediaan kami-barat-2c). Rentang IP untuk Subnet2 adalah 10.0.2.0/24, jadi IP 10.0.2.4 digunakan di sini: Catatan: konfigurasi disk default baik-baik saja untuk node saksi. Disk ke-2 TIDAK diperlukan: Tandai simpul saksi:
Mungkin diperlukan sedikit waktu untuk 3 kali persiapan Anda. Setelah selesai, Anda akan melihat daftar tersebut berjalan di konsol EC2 Anda:
Buat IP Elastis
Selanjutnya, buat IP Elastis, yang merupakan alamat IP publik yang akan digunakan untuk menghubungkan Anda dengan instance dari dunia luar. Pilih IP Elastis di menu sebelah kiri, lalu klik "Alokasikan Alamat Baru": Pilih IP Elastis yang baru dibuat, klik kanan, dan pilih "Alamat Asosiasi": Kaitkan IP Elastis ini dengan Node1: Ulangi ini untuk dua contoh lain jika Anda ingin mereka memiliki akses internet atau dapat SSH / VNC ke mereka secara langsung.
Buat Entri Rute untuk IP Virtual
Pada titik ini semua 3 instance telah dibuat, dan tabel rute perlu diperbarui sekali lagi agar IP Virtual kluster dapat berfungsi. Dalam konfigurasi klaster multi-subnet ini, Virtual IP harus tinggal di luar jangkauan CIDR yang dialokasikan ke VPC Anda. Tentukan rute baru yang akan mengarahkan lalu lintas ke IP Virtual kluster (10.1.0.10) ke nodus klaster utama (Node1) Dari Dasbor VPC, pilih Tabel Rute, klik Edit. Tambahkan rute untuk "10.1.0.10/32" dengan tujuan Node1:
Nonaktifkan Sumber / Dest Memeriksa untuk ENI
Selanjutnya, nonaktifkan Source / Dest Memeriksa untuk Elastic Network Interfaces (ENI) dari node cluster Anda. Ini diperlukan agar instance dapat menerima paket jaringan untuk alamat IP virtual kluster. Lakukan ini untuk semua ENI. Pilih "Network Interfaces", klik kanan pada ENI, dan pilih "Change Source / Dest Check". Pilih "Nonaktif":
Dapatkan ID Kunci Akses dan Kunci Akses Rahasia
Kemudian dalam panduan ini, perangkat lunak kluster akan menggunakan Antarmuka Baris Perintah AWS (CLI) untuk memanipulasi entri tabel rute untuk IP Virtual klaster untuk mengalihkan lalu lintas ke node kluster aktif. Agar ini berfungsi, Anda harus mendapatkan ID Kunci Akses dan Kunci Akses Rahasia agar AWS CLI dapat diautentikasi dengan benar. Di kanan atas EC2 Dashboard, klik pada nama Anda, dan di bawahnya pilih "Kredensial Keamanan" dari drop-down: Memperluas bagian "Kunci Akses (ID Kunci Akses dan Kunci Akses Rahasia)" dari tabel, dan klik "Buat Kunci Akses Baru". Unduh File Kunci dan simpan file di lokasi yang aman.
Konfigurasi OS Linux
Hubungkan ke instance linux (s):
Untuk terhubung ke instance linux yang baru dibuat (melalui SSH), klik kanan pada instance dan pilih "Connect". Ini akan menampilkan instruksi untuk menghubungkan ke instance. Anda akan memerlukan File Kunci Pribadi yang Anda buat / unduh pada langkah sebelumnya: Contoh: Di sinilah kita akan meninggalkan EC2 Dashboard sebentar dan membuat tangan kita kotor di baris perintah, yang sebagai administrator Linux Anda harus digunakan untuk sekarang. Anda tidak diberikan kata sandi root ke VM Linux Anda di AWS (atau akun default "ec2-user"), jadi setelah Anda terhubung, gunakan perintah "sudo" untuk mendapatkan hak akses root:
$ sudo su -
Edit / etc / hosts
Kecuali Anda sudah memiliki pengaturan server DNS, Anda akan ingin membuat entri file host pada semua 3 server sehingga mereka dapat menyelesaikan satu sama lain dengan nama Tambahkan baris berikut ke akhir file / etc / hosts Anda:
10.0.0.4 simpul1 10.0.1.4 node2 10.0.2.4 saksi 10.1.0.10 mysql-vip
Nonaktifkan SELinux
Edit / etc / sysconfig / linux dan atur "SELINUX = dinonaktifkan":
# vi / etc / sysconfig / selinux # File ini mengontrol status SELinux pada sistem. # SELINUX = dapat mengambil salah satu dari tiga nilai ini: # Enforcing - Kebijakan keamanan SELinux diberlakukan. # Permissive - SELinux mencetak peringatan daripada menegakkan. # Disabled - Tidak ada kebijakan SELinux yang dimuat. SELINUX = dinonaktifkan # SELINUXTYPE = dapat mengambil salah satu dari dua nilai ini: # Targeted - Proses yang ditargetkan terlindungi, # Mls - Perlindungan Multi Level Security. SELINUXTYPE = ditargetkan
Setel Nama Inang
Secara default, instance Linux ini akan memiliki nama host yang didasarkan pada alamat IP server, sesuatu seperti "ip-10-0-0-4.us-west-2.compute.internal" Anda mungkin memperhatikan bahwa jika Anda mencoba untuk memodifikasi nama host dengan cara "normal" (misal mengedit / etc / sysconfig / network, dll), setelah setiap reboot, ia akan kembali ke semula !! Saya menemukan untaian besar di forum diskusi AWS yang menjelaskan cara mendapatkan hostname agar tetap statis setelah reboot. Detail di sini: https://forums.aws.amazon.com/message.jspa?messageID=560446 Komentar modul yang mengatur nama host di file “/etc/cloud/cloud.cfg”. Modul-modul berikut dapat dikomentari menggunakan #.
# - set_hostname # - update_hostname
Selanjutnya, ubah juga nama host Anda di / etc / hostname.
Reboot Cluster Nodes
Reboot semua 3 instance sehingga SELinux dinonaktifkan, dan perubahan hostname berpengaruh.
Instal dan Konfigurasikan VNC (dan paket terkait)
Untuk mengakses GUI server linux kami, dan kemudian menginstal dan mengkonfigurasi kluster kami, menginstal server VNC, serta beberapa paket lain yang diperlukan (perangkat lunak klaster membutuhkan redhat-lsb dan rpms patch).
# yum groupinstall "X Window System" # yum groupinstall "Server dengan GUI" # yum instal tigervnc-server xterm wget unzip patch redhat-lsb
# vncpasswd
Untuk RHEL 7.x / CentOS7.x: URL berikut adalah panduan yang bagus untuk menjalankan Server VNC di RHEL 7 / CentOS 7: https://www.digitalocean.com/community/tutorials/how-to-install-and -configure-vnc-remote-access-for-the-gnome-desktop-on-centos-7 Catatan: Contoh konfigurasi ini menjalankan VNC pada tampilan 2 (: 2, alias port 5902) dan sebagai root (tidak aman). Atur sesuai!
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service # vi /etc/systemd/system/vncserver@:2.service [Layanan] Ketik = forking # Bersihkan semua file yang ada di /tmp/.X11-unix environment ExecStartPre = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : ' ExecStart = / sbin / runuser -l root -c "/ usr / bin / vncserver% i -geometry 1024x768" PIDFile = / root / .vnc /% H% i.pid ExecStop = / bin / sh -c '/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : ' # systemctl daemon-ulang # systemctl enable vncserver @: 2.service # vncserver: 2 -geometry 1024x768
Untuk sistem RHEL / CentOS 6.x:
# vi / etc / sysconfig / vncservers VNCSERVERS = "2: root" VNCSERVERARGS [2] = "- geometri 1024x768" # service vncserver mulai # chkconfig vncserver aktif
Buka klien VNC, dan hubungkan ke <ElasticIP: 2>. Jika Anda tidak bisa mendapatkannya, kemungkinan firewall linux Anda menghalangi. Buka port VNC yang kami gunakan di sini (port 5902), atau untuk saat ini, nonaktifkan firewall (BUKAN DIREKOMENDASIKAN UNTUK LINGKUNGAN PRODUKSI):
# systemctl hentikan firewalld # systemctl menonaktifkan firewalld
Partisi dan Format disk “data”
Ketika instance linux diluncurkan, dan disk tambahan ditambahkan ke setiap node cluster untuk menyimpan data aplikasi yang akan kami lindungi. Dalam hal ini kebetulan database MySQL. Disk kedua akan muncul sebagai / dev / xvdb. Anda dapat menjalankan perintah "fdisk-l" untuk memverifikasi. Anda akan melihat bahwa / dev / xvda (OS) sudah digunakan.
# fdisk-l
Disk / dev / xvda: 10.7 GB, 10737418240 byte, 20971520 sektor Unit = sektor 1 * 512 = 512 byte Ukuran sektor (logis / fisik): 512 byte / 512 byte I / O ukuran (minimum / optimal): 512 byte / 512 bytes Jenis label disk: gpt # Mulai Akhir Ukuran Tipe Nama 1 2048 4095 1M BIOS boot parti 2 4096 20971486 10G Microsoft dasar Disk / dev / xvdb: 2147 MB, 2147483648 byte, 4194304 sektor Unit = sektor 1 * 512 = 512 byte Ukuran sektor (logis / fisik): 512 byte / 512 byte Ukuran I / O (minimum / optimal): 512 byte / 512 byte Di sini saya akan membuat partisi (/ dev / xvdb1), memformatnya, dan memasangnya di default lokasi untuk MySQL, yang / var / lib / mysql. Lakukan langkah-langkah berikut pada KEDUA "node1" dan "node2":
# fdisk / dev / xvdb Selamat datang di fdisk (util-linux 2.23.2). Perubahan hanya akan tersimpan di memori, sampai Anda memutuskan untuk menulisnya. Hati-hati sebelum menggunakan perintah tulis. Perangkat tidak berisi tabel partisi yang dikenali Membangun disklabel DOS baru dengan pengidentifikasi disk 0x8c16903a. Perintah (m untuk bantuan): n Jenis partisi: p primer (0 utama, 0 diperpanjang, 4 gratis) e diperpanjang Pilih (standar p): hal Nomor partisi (1-4, standar 1): 1 Sektor pertama (2048-4194303, standar 2048): <enter> Menggunakan nilai default 2048 Sektor terakhir, sektor atau ukuran {K, M, G} (2048-4194303, default 4194303): <enter> Menggunakan nilai default 4194303 Partisi 1 jenis Linux dan ukuran 2 GiB diatur Perintah (m untuk bantuan): w Tabel partisi telah diubah! Memanggil ioctl () untuk membaca kembali tabel partisi. Sinkronisasi disk.
# Mkfs.ext4 / dev / xvdb1 # mkdir / var / lib / mysql Pada node1, mount filesystem:
# mount / dev / xvdb1 / var / lib / mysql
Instal Alat API EC2
EC2 API Tools (EC2 CLI) harus diinstal pada setiap node cluster, sehingga perangkat lunak klaster nantinya dapat memanipulasi Tabel Rute, memungkinkan konektivitas ke Virtual IP. URL berikut adalah panduan yang sangat baik untuk mengatur ini. unzip, dan pindahkan alat CLI ke lokasi standar (/ opt / aws):
# wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip # unzip ec2-api-tools.zip # mv ec2-api-tools-1.7.5.1 / / opt / aws / # export EC2_HOME = "/ opt / aws"
Jika java belum diinstal (jalankan "java mana" untuk memeriksanya), instal:
# yum install java-1.8.0-openjdk
example (Berdasarkan konfigurasi default sistem RHEL 7.2. Sesuaikan sesuai)
# export JAVA_HOME = "/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64 / jre /"
Anda perlu Kunci Akses AWS dan Kunci Rahasia AWS. Pertahankan nilai-nilai ini berguna, karena nilai-nilai ini akan dibutuhkan nanti selama pengaturan kluster juga! Rujuk ke URL berikut untuk informasi lebih lanjut: https://console.aws.amazon.com/iam/home?#security_credential
# export AWS_ACCESS_KEY = Anda-aws-access-key-id # export AWS_SECRET_KEY = kunci-aws-rahasia Anda
Uji fungsionalitas utilitas CLI:
# / opt / aws / bin / ec2-describ-regions REGION eu-west-1 ec2.eu-west-1.amazonaws.com REGION ap-tenggara-1 ec2.ap-southeast-1.amazonaws.com REGION ap-tenggara-2 ec2.ap-southeast-2.amazonaws.com REGION eu-central-1 ec2.eu-central-1.amazonaws.com REGION ap-northeast-2 ec2.ap-northeast-2.amazonaws.com REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com REGION us-east-1 ec2.us-east-1.amazonaws.com REGION sa-east-1 ec2.sa-east-1.amazonaws.com REGION us-west-1 ec2.us-west-1.amazonaws.com REGION us-west-2 ec2.us-west-2.amazonaws.com
Instal dan Konfigurasikan MySQL
Selanjutnya, instal instal paket-paket MySQL, inisialisasi basis data sampel, dan atur kata sandi "root" untuk MySQL. Di RHEL7.X, paket MySQL telah diganti dengan paket MariaDB.
Pada "node1":
# yum instal mariadb mariadb-server # mount / dev / xvdb1 / var / lib / mysql # / usr / bin / mysql_install_db --datadir = "/ var / lib / mysql /" --user = mysql # mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 --datadir = / var / lib / mysql --log & # # # CATATAN: Perintah selanjutnya ini memungkinkan koneksi jarak jauh dari host APAPUN. BUKAN ide bagus untuk produksi! # echo “perbarui pengguna mengatur Host = '%' di mana Host = 'node1'; hak istimewa flush | mysql mysql # # # Atur kata sandi root MySQL ke 'SIOS' # echo "perbarui set pengguna Kata Sandi = PASSWORD ('SIOS') di mana Pengguna = 'root'; hak istimewa flush" | mysql mysql
Buat file konfigurasi MySQL. Kami akan menempatkan ini pada disk data (yang nantinya akan direplikasi – /var/lib/mysql/my.cnf). Contoh:
# vi /var/lib/mysql/my.cnf [mysqld] datadir = / var / lib / mysql socket = / var / lib / mysql / mysql.sock pid-file = / var / run / mariadb / mariadb.pid pengguna = root port = 3306 # Menonaktifkan tautan simbolis disarankan untuk mencegah berbagai risiko keamanan symbolic-links = 0 [mysqld_safe] log-error = / var / log / mariadb / mariadb.log pid-file = / var / run / mariadb / mariadb.pid [klien] pengguna = root kata sandi = SIOS
Pindahkan file konfigurasi MySQL asli, jika ada:
# mv /etc/my.cnf /etc/my.cnf.orig
Pada "node2":
Pada "node2", Anda HANYA perlu menginstal paket MariaDB / MySQL. Langkah-langkah lain tidak diperlukan:
[root @ node2 ~] # yum instal mariadb mariadb-server
Instal dan Konfigurasikan Cluster
Pada titik ini, kami siap untuk menginstal dan mengkonfigurasi cluster kami. SIOS Protection Suite untuk Linux (alias SPS-Linux) akan digunakan dalam panduan ini sebagai teknologi pengelompokan. Ini menyediakan fitur failover clustering (LifeKeeper) ketersediaan tinggi serta replikasi data level blok waktu nyata (DataKeeper) dalam satu solusi terintegrasi. SPS-Linux memungkinkan Anda untuk menyebarkan cluster "SANLess", alias cluster "nothing nothing" yang berarti bahwa node cluster tidak memiliki penyimpanan bersama, seperti halnya EC2 Instances.
Instal SIOS Protection Suite untuk Linux
Lakukan langkah-langkah berikut pada ALL 3 VM (node1, node2, saksi): Unduh file gambar instalasi SPS-Linux (sps.img) dan dan dapatkan lisensi percobaan atau beli lisensi permanen. Hubungi SIOS untuk informasi lebih lanjut. Anda akan mengulang mount itu dan menjalankan skrip "setup" di dalam, sebagai root (atau "sudo su -" pertama untuk mendapatkan shell root) Sebagai contoh:
# mkdir / tmp / install # mount -o loop sps.img / tmp / install # cd / tmp / install # ./mempersiapkan
Selama skrip instalasi, Anda akan diminta untuk menjawab sejumlah pertanyaan. Anda akan menekan Enter di hampir setiap layar untuk menerima nilai default. Perhatikan pengecualian berikut:
- Pada layar berjudul "High Availability NFS" Anda dapat memilih "n" karena kami tidak akan membuat server NFS yang sangat tersedia
- Menjelang akhir skrip pengaturan, Anda dapat memilih untuk menginstal kunci lisensi percobaan sekarang, atau yang lebih baru. Kami akan menginstal kunci lisensi nanti, sehingga Anda dapat memilih "n" dengan aman pada saat ini
- Di layar akhir "pengaturan" pilih ARK (Application Recovery Kits, mis. "Agen klaster") yang ingin Anda instal dari daftar yang ditampilkan di layar.
- ARK HANYA diperlukan pada "node1" dan "node2". Anda tidak perlu menginstal pada "saksi"
- Navigasikan daftar dengan panah atas / bawah, dan tekan SPACEBAR untuk memilih yang berikut:
- lkDR – DataKeeper untuk Linux
- lkSQL – LifeKeeper MySQL RDBMS Recovery Kit
- Ini akan menghasilkan RPM tambahan berikut yang diinstal pada "node1" dan "node2":
- steeleye-lkDR-9.0.2-6513.noarch.rpm
- steeleye-lkSQL-9.0.2-6513.noarch.rpm
Instal paket Saksi / Kuorum
Paket Dukungan Server Kuorum / Saksi untuk LifeKeeper (steeleye-lkQWK) yang dikombinasikan dengan proses failover yang ada pada inti LifeKeeper memungkinkan kegagalan sistem terjadi dengan tingkat kepercayaan yang lebih besar dalam situasi di mana total kegagalan jaringan bisa terjadi. Ini secara efektif berarti bahwa kegagalan dapat dilakukan sambil sangat mengurangi risiko situasi "otak ganda". Instal rpm Saksi / Kuorum pada ketiga simpul (simpul1, simpul2, saksi):
# cd / tmp / install / kuorum # Rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm
Pada SEMUA 3 node (node1, node2, saksi), edit / etc / default / LifeKeeper, atur NOBCASTPING = 1 ON ONLY server Witness ("saksi"), edit / etc / default / LifeKeeper, set WITNESS_MODE = off / none
Instal Paket EC2 Recovery Kit
SPS-Linux menyediakan fitur spesifik yang memungkinkan sumber daya untuk failover antara node di zona dan wilayah ketersediaan yang berbeda. Di sini, EC2 Recovery Kit (mis. Agen klaster) digunakan untuk memanipulasi Tabel Rute sehingga koneksi ke IP Virtual dialihkan ke node kluster yang aktif. Instal EC2 rpm (node1, node2):
# cd / tmp / install / amazon # Rpm -Uvh steeleye-lkECC-9.0.2-6513.noarch.rpm
Instal kunci Lisensi
Pada ketiga node, gunakan perintah "lkkeyins" untuk menginstal file lisensi yang Anda peroleh dari SIOS:
# / opt / LifeKeeper / bin / lkkeyins <path_to_file> / <filename> .lic
Mulai LifeKeeper
Pada ketiga node, gunakan perintah "lkstart" untuk memulai perangkat lunak cluster:
# / opt / LifeKeeper / bin / lkstart
Tetapkan Izin Pengguna untuk GUI LifeKeeper
Pada ketiga node, buat akun pengguna linux baru (mis. "Tony" dalam contoh ini). Edit / etc / group dan tambahkan pengguna "tony" ke grup "lkadmin" untuk memberikan akses ke GUI LifeKeeper. Secara default hanya "root" adalah anggota grup, dan kami tidak memiliki kata sandi root di sini:
# useradd tony # passwd tony # vi / etc / group lkadmin: x: 1001: root, tony
Buka GUI LifeKeeper
Buat koneksi VNC ke alamat Elastic IP (Public IP) dari node1. Berdasarkan konfigurasi VNC dari atas, Anda akan terhubung ke <Public_IP>: 2 menggunakan kata sandi VNC yang Anda tentukan sebelumnya. Setelah masuk, buka jendela terminal dan jalankan LifeKeeper GUI menggunakan perintah berikut:
# / opt / LifeKeeper / bin / lkGUIapp &
Anda akan diminta untuk terhubung ke node cluster pertama Anda ("node1"). Masukkan linux userid dan kata sandi yang ditentukan selama pembuatan VM: Selanjutnya, hubungkan ke "simpul2" dan "saksi" dengan mengklik tombol "Hubungkan ke Server" yang disorot dalam tangkapan layar berikut: Sekarang Anda akan melihat ketiga server di GUI, dengan ikon tanda centang hijau yang menunjukkan mereka sedang online dan sehat:
Buat Jalur Komunikasi
Klik kanan pada "node1" dan pilih Create Comm Path Pilih KEDUA "node2" dan "saksi" dan kemudian ikuti wizard. Ini akan membuat jalur kom antara:
- simpul1 & simpul2
- simpul1 & saksi
Jalur kom masih perlu dibuat antara node2 & saksi. Klik kanan pada "node2" dan pilih Create Comm Path. Ikuti wizard dan pilih "saksi" sebagai server jauh: Pada titik ini jalur kom berikut telah dibuat:
- simpul1 <—> simpul2
- simpul1 <—> saksi
- simpul2 <—> saksi
Ikon di depan server telah berubah dari "tanda centang" hijau ke "tanda bahaya" kuning. Ini karena kami hanya memiliki jalur komunikasi tunggal antar node. Jika VM memiliki beberapa NIC (informasi tentang cara membuat Azure VM dengan banyak NIC dapat ditemukan di sini, tetapi tidak akan dibahas dalam artikel ini), Anda akan membuat jalur kom yang berlebihan antara setiap server. Untuk menghapus ikon peringatan, buka menu Lihat dan pilih-pilih "Comm Path Redundancy Warning": Hasil:
Verifikasi Jalur Komunikasi
Gunakan perintah "lcdstatus" untuk melihat status sumber daya gugus. Jalankan perintah berikut untuk memverifikasi bahwa Anda telah membuat jalur kom dengan benar pada setiap node ke dua server lain yang terlibat: # / opt / LifeKeeper / bin / lcdstatus -q -d node1 MESIN ALAMAT JARINGAN / ALAT-ALAT PERANGKAT KERJA / NEGARA PERANGKAT PRIO node2 TCP 10.0.0.4/ 10.0.1.4 HIDUP 1 saksi TCP 10.0.0.4/10.0.2.4 HIDUP 1 # / opt / LifeKeeper / bin / lcdstatus -q -d node2 MESIN JARINGAN ALAMAT / PERANGKAT NEGARA NEGARA PRIO node1 TCP 10.0.1.4/10.0.0.4 HIDUP 1 saksi TCP 10.0.1.4/10.0.2.4 HIDUP 1 # / opt / LifeKeeper / bin / lcdstatus -q -d saksi MESIN JARINGAN ALAMAT / PERANGKAT NEGARA NEGARA PRIO node1 TCP 10.0.2.4/10.0.0.4 HIDUP 1 node2 TCP 10.0.2.4/10.0.1.4 HIDUP 1
Membuat sumber daya klaster Replikasi Data (mis. Cermin)
Selanjutnya, buat sumber daya Replikasi Data untuk mereplikasi partisi / var / lib / mysql dari node1 (sumber) ke node2 (target). Klik ikon "tambah hijau" untuk membuat sumber daya baru: Ikuti wizard dengan pilihan ini:
Silakan Pilih Kit Pemulihan: Replikasi Data Tipe Switchback: cerdas Server: node1 Jenis Hierarki: Replikasi Sistem File yang Keluar Mount Point yang ada: / var / lib / mysql Sumber Daya Replikasi Data Tag: datarep-mysql Tab Sumber Daya Sistem File: / var / lib / mysql File Bitmap: (nilai default) Aktifkan Replikasi Asinkron: Tidak
Setelah sumber daya dibuat, wisaya “Perpanjang” (mis. Tentukan server cadangan) akan muncul. Gunakan pilihan berikut:
Server Target: node2 Tipe Switchback: Cerdas Prioritas Templat: 1 Prioritas Target: 10 Disk Target: / dev / xvdb1 Sumber Daya Replikasi Data Tag: datarep-mysql File Bitmap: (nilai default) Jalur Replikasi: 10.0.0.4/10.0.1.4 Mount Point: / var / lib / mysql Root Tag: / var / lib / mysql
Cluster akan terlihat seperti ini:
Buat IP Virtual
Selanjutnya, buat sumber daya cluster IP Virtual. Klik ikon "tambah hijau" untuk membuat sumber daya baru: Ikuti wizard dengan untuk membuat sumber daya IP dengan pilihan ini:
Pilih Kit Pemulihan: IP Tipe Switchback: Cerdas Sumberdaya IP: 10.1.0.10 Netmask: 255.255.255.0 Antarmuka Jaringan: eth0 Tag Sumber Daya IP: ip-10.1.0.10
Perpanjang sumber daya IP dengan pilihan-pilihan ini:
Tipe Switchback: Cerdas Prioritas Templat: 1 Prioritas Target: 10 Sumberdaya IP: 10.1.0.10 Netmask: 255.255.255.0 Antarmuka Jaringan: eth0 Tag Sumber Daya IP: ip-10.1.0.10
Cluster sekarang akan terlihat seperti ini, dengan sumber daya Mirror dan IP dibuat:
Konfigurasikan Daftar Ping untuk sumber daya IP
Secara default, SPS-Linux memantau kesehatan sumber daya IP dengan melakukan ping siaran. Di banyak lingkungan virtual dan cloud, broadcast ping tidak berfungsi. Pada langkah sebelumnya, kita mengatur “NOBCASTPING = 1” di / etc / default / LifeKeeper untuk mematikan pemeriksaan ping broadcast. Sebagai gantinya, kami akan mendefinisikan daftar ping. Ini adalah daftar alamat IP yang akan di-ping selama pemeriksaan kesehatan IP untuk sumber daya IP ini. Dalam panduan ini, kami akan menambahkan server saksi (10.0.2.4) ke daftar ping kami. Klik kanan pada sumber daya IP (ip-10.1.0.10) dan pilih Properties: Anda akan melihat bahwa pada awalnya, tidak ada daftar ping yang dikonfigurasi untuk subnet 10.1.0.0 kami. Klik "Modifikasi Daftar Ping": Masukkan "10.0.2.4" (alamat IP server saksi kami), klik "Tambah alamat" dan akhirnya klik "Simpan Daftar": Anda akan dikembalikan ke panel properti IP, dan dapat memverifikasi bahwa 10.0.2.4 telah ditambahkan ke daftar ping. Klik OK untuk menutup jendela:
Buat hirarki sumber daya MySQL
Selanjutnya, buat sumber daya cluster MySQL. Sumber daya MySQL bertanggung jawab untuk menghentikan / memulai / memonitor database MySQL Anda. Sebelum membuat sumber daya MySQL, pastikan database berjalan. Jalankan “ps -ef | grep sql ”untuk memeriksa. Jika berjalan, bagus – tidak ada hubungannya. Jika tidak, mulai cadangan database:
# mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 --datadir = / var / lib / mysql --log &
Untuk membuat, klik ikon "hijau plus" untuk membuat sumber daya baru: Ikuti wizard dengan untuk membuat sumber daya IP dengan pilihan ini:
Pilih Recovery Kit: Database MySQL Tipe Switchback: Cerdas Server: node1 Lokasi my.cnf: / var / lib / mysql Lokasi executable MySQL: / usr / bin Tag Database: mysql
Perpanjang sumber daya IP dengan pilihan berikut:
Server Target: node2 Tipe Switchback: cerdas Prioritas Templat: 1 Prioritas Target: 10
Akibatnya, kluster Anda akan terlihat sebagai berikut. Perhatikan bahwa sumber Replikasi Data dipindahkan secara otomatis di bawah basis data (ketergantungan dibuat secara otomatis) untuk memastikannya selalu dibawa online sebelum basis data:
Buat Sumber Daya EC2 Untuk Mengelola Tabel Rute Setelah Gagal
SPS-Linux menyediakan fitur spesifik yang memungkinkan sumber daya untuk failover antara node di zona dan wilayah ketersediaan yang berbeda. Di sini, EC2 Recovery Kit (mis. Agen klaster) digunakan untuk memanipulasi Tabel Rute sehingga koneksi ke IP Virtual dialihkan ke node kluster yang aktif. Untuk membuat, klik ikon "tambah hijau" untuk membuat sumber daya baru: Ikuti wizard dengan untuk membuat sumber daya EC2 dengan pilihan ini:
Pilih Kit Pemulihan: Amazon EC2 Tipe Switchback: Cerdas Server: node1 EC2 Home: / opt / aws URL EC2: ec2.us-west-2.amazonaws.com Kunci Akses AWS: (masukkan Kunci Akses yang diperoleh sebelumnya) Kunci Rahasia AWS: (masukkan Kunci Rahasia yang diperoleh sebelumnya) Tipe Sumber Daya EC2: RouteTable (Backend cluster) Sumberdaya IP: ip-10.1.0.10 Tag Sumber Daya EC2: ec2-10.1.0.10
Perpanjang sumber daya IP dengan pilihan berikut:
Server Target: node2 Tipe Switchback: cerdas Prioritas Templat: 1 Prioritas Target: 10 Tag Sumber Daya EC2: ec2-10.1.0.10
Cluster akan terlihat seperti ini. Perhatikan bagaimana sumber daya EC2 di bawah sumber daya IP:
Buat Ketergantungan antara sumber daya IP dan sumber daya Database MySQL
Buat ketergantungan antara sumber daya IP dan sumber daya Database MySQL sehingga mereka gagal bersama sebagai sebuah kelompok. Klik kanan pada sumber daya "mysql" dan pilih "Buat Ketergantungan": Pada layar berikut, pilih sumber daya "ip-10.1.0.10" sebagai ketergantungan. Klik Next dan lanjutkan melalui wizard: Pada titik ini konfigurasi cluster SPS-Linux selesai. Hirarki sumber daya akan terlihat sebagai berikut:
Uji Konektivitas Cluster
Pada titik ini, semua konfigurasi Amazon EC2 dan Cluster kami sudah selesai! Sumber daya cluster saat ini aktif pada node1: Uji konektivitas ke cluster dari server saksi (atau contoh linux lain jika Anda memilikinya) SSH ke server saksi, "sudo su -" untuk mendapatkan akses root. Instal klien mysql jika diperlukan:
[root @ saksi ~] # yum -y instal mysql
Uji konektivitas MySQL ke kluster:
[root @itness ~] # mysql --host = 10.1.0.10 mysql -u root -p
Jalankan query MySQL berikut untuk menampilkan nama host dari node cluster aktif:
MariaDB [mysql]> pilih @@ hostname; ------------ | @@ hostname | ------------ | node1 | ------------ 1 baris dalam set (0,00 dtk) MariaDB [mysql]>
Menggunakan LifeKeeper GUI, failover dari Node1 -> Node2 ″. Klik kanan pada sumber daya mysql di bawah node2, dan pilih "Dalam Layanan …": Setelah failover selesai, jalankan kembali permintaan MySQL. Anda akan melihat bahwa klien MySQL telah mendeteksi bahwa sesi itu hilang (selama failover) dan secara otomatis menyambung kembali: Jalankan permintaan MySQL berikut untuk menampilkan nama host dari simpul gugus aktif, memverifikasi bahwa sekarang “simpul2” aktif:
MariaDB [mysql]> pilih @@ hostname; ERROR 2006 (HY000): Server MySQL telah hilang Tidak ada koneksi. Mencoba menyambung kembali ... ID koneksi: 12 Database saat ini: mysql ------------ | @@ hostname | ------------ | node2 | ------------ 1 baris dalam set (0,53 detik) MariaDB [mysql]>
Menyukai panduan langkah demi langkah ini untuk Mengkonfigurasi Linux Failover Cluster Di Amazon EC2 Tanpa Penyimpanan Bersama, baca lebih lanjut di sini Diproduksi ulang dengan izin dari Linuxclustering