Langkah-demi-Langkah: Cara mengonfigurasi klaster failover SANless MySQL Linux di Amazon EC2
Dalam panduan langkah demi langkah ini, saya akan memandu Anda melalui semua langkah yang diperlukan untuk mengonfigurasi klaster MySQL 2-node yang sangat tersedia (plus server saksi) di Amazon Elastic Compute Cloud (Amazon EC2). Panduan ini mencakup tangkapan layar, perintah shell, dan cuplikan kode yang sesuai. 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 pemahaman dasar tentang administrasi sistem Linux dan konsep pengelompokan failover seperti IP Virtual, dll.
Pengelompokan failover telah ada selama bertahun-tahun. Dalam konfigurasi umum, dua atau lebih node dikonfigurasikan dengan penyimpanan bersama untuk memastikan bahwa jika terjadi failover pada node utama, node sekunder atau target akan mengakses data paling terbaru. Menggunakan penyimpanan bersama tidak hanya memungkinkan tujuan titik pemulihan mendekati nol, ini juga merupakan persyaratan wajib untuk sebagian besar perangkat lunak pengelompokan. Namun, penyimpanan bersama menghadirkan beberapa tantangan. Pertama, ini adalah satu titik risiko kegagalan. Jika penyimpanan bersama – biasanya SAN – gagal, semua node di cluster gagal. Kedua, SAN bisa mahal dan rumit untuk dibeli, disiapkan, dan dikelola. Ketiga, penyimpanan bersama di cloud publik, termasuk Amazon EC2 tidak mungkin, atau tidak praktis bagi perusahaan yang ingin mempertahankan ketersediaan tinggi (waktu aktif 99,99%), waktu pemulihan dan tujuan titik pemulihan mendekati nol, dan perlindungan pemulihan bencana.
Berikut ini menunjukkan betapa mudahnya membuat cluster SANless di cloud untuk menghilangkan tantangan ini sambil memenuhi HA / DR SLA yang ketat. Langkah-langkah di bawah ini menggunakan database MySQL dengan Amazon EC2, tetapi langkah yang sama dapat disesuaikan untuk membuat klaster 2-node di AWS untuk melindungi SQL, SAP, Oracle, atau aplikasi lainnya.
CATATAN: Tampilan fitur, layar, dan tombol Anda mungkin sedikit berbeda dari screenshot yang disajikan di bawah ini
1. Buat Virtual Private Cloud (VPC)
2. Buat Gateway Internet
3. Buat Subnet (Zona Ketersediaan)
4. Konfigurasi Tabel Rute
5. Konfigurasikan Grup Keamanan
6. Luncurkan Instance
7. Buat IP Elastis
8. Buat Entri Rute untuk IP Virtual
9. Nonaktifkan Pemeriksaan Sumber / Tujuan untuk ENI
10. Dapatkan ID Kunci Akses dan Kunci Akses Rahasia
11. Konfigurasi OS Linux
12. Instal Alat API EC2
13. Instal dan Konfigurasi MySQL
14. Instal dan Konfigurasi Cluster
15. Konektivitas Cluster Uji
Gambaran
Artikel ini akan menjelaskan cara membuat cluster dalam satu wilayah Amazon EC2. Node cluster (node1, node2 dan server saksi) akan berada di Availability Zone yang berbeda untuk ketersediaan maksimum. Ini juga berarti bahwa node akan berada di subnet yang berbeda.
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
Langkah 1: Buat Virtual Private Cloud (VPC)
Pertama, buat Virtual Private Cloud (alias VPC). VPC adalah jaringan terisolasi dalam cloud Amazon yang didedikasikan untuk Anda. Anda memiliki kendali penuh atas hal-hal seperti blok dan subnet alamat IP, tabel rute, grup keamanan (mis. Firewall), dan banyak lagi. Anda akan meluncurkan mesin virtual (VM) Azure Iaas Anda ke Jaringan Virtual Anda.
Dari dasbor AWS utama, pilih "VPC"
Di bawah "VPC Anda", pastikan Anda telah memilih region yang tepat di kanan atas layar. Dalam panduan ini wilayah "AS Barat (Oregon)" akan digunakan, karena merupakan wilayah yang memiliki 3 Availability Zone. Untuk informasi lebih lanjut tentang Region dan Availability Zone, 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 di layar "VPC Anda":
Langkah 2: Buat Gateway Internet
Selanjutnya, buat Gateway Internet. Ini diperlukan jika Anda ingin Instance (VM) Anda dapat berkomunikasi dengan internet.
Di menu sebelah kiri, pilih Gateway Internet dan klik tombol Buat Gateway Internet. Beri nama, dan buat:
Selanjutnya, pasang gateway internet ke VPC Anda:
Pilih VPC Anda, dan klik Lampirkan:
Langkah 3: Buat Subnet (Zona Ketersediaan)
Selanjutnya, buat 3 subnet. Setiap subnet akan berada di Availability Zone itu sendiri. 3 Mesin Virtual (VM: node1, node2, saksi) akan diluncurkan ke subnet terpisah (dan oleh karena itu, Availability Zone) sehingga kegagalan Availability Zone tidak akan menghilangkan beberapa node cluster.
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 Dasbor VPC, buka 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 membuat 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 di Availability Zone yang terpisah, seperti yang terlihat di bawah ini:
Langkah 4: Konfigurasikan Tabel Rute
Perbarui tabel rute VPC sehingga lalu lintas ke dunia luar dikirim ke Gerbang Internet yang dibuat pada langkah sebelumnya. Dari Dasbor VPC, pilih Tabel Rute. Buka tab Rute, dan secara default hanya akan ada satu rute yang mengizinkan lalu lintas hanya dalam VPC.
Klik Edit:
Tambahkan rute lain:
Tujuan dari rute baru ini adalah "0.0.0.0/0" (internet) dan untuk Target, pilih Gateway Internet Anda. Kemudian klik Simpan:
Selanjutnya, kaitkan 3 subnet dengan Tabel Rute. Klik tab "Asosiasi Subnet", dan Edit:
Centang kotak di samping 3 subnet, dan Simpan:
Verifikasi bahwa 3 subnet terkait dengan tabel rute utama:
Nanti, kami akan kembali dan memperbarui Tabel Rute sekali lagi, menentukan rute yang akan memungkinkan lalu lintas untuk berkomunikasi dengan IP Virtual cluster, tetapi ini perlu dilakukan SETELAH Linux Instances (VM) telah dibuat.
Langkah 5: Konfigurasikan Grup Keamanan
Edit Grup Keamanan (firewall virtual) untuk mengizinkan lalu lintas SSH dan VNC yang masuk. Keduanya nantinya akan digunakan untuk mengkonfigurasi instance linux serta instalasi / konfigurasi software cluster.
Di menu sebelah kiri, pilih "Grup Keamanan" lalu klik tab "Aturan Masuk". Klik Edit:
Tambahkan aturan untuk SSH (port 22) dan VNC. VNC umumnya menggunakan port di 5900, tergantung pada cara Anda mengkonfigurasinya, jadi untuk keperluan panduan ini, kami akan membuka kisaran port 5900-5910. Konfigurasi yang sesuai berdasarkan penyiapan VNC Anda:
Langkah 6: Luncurkan Instans
Kami akan menyediakan 3 Mesin Virtual (Mesin Virtual) dalam panduan ini. Dua VM pertama (disebut "node1" dan "node2") akan berfungsi sebagai node cluster dengan kemampuan untuk menghadirkan database MySQL dan resource terkaitnya secara online. VM ke-3 akan bertindak sebagai server saksi cluster untuk perlindungan tambahan terhadap otak yang terbelah.
Untuk memastikan ketersediaan maksimum, ketiga VM akan di-deploy ke Availability Zone yang berbeda dalam satu region. Ini berarti setiap instance akan berada di subnet yang berbeda.
Buka dasbor AWS utama, dan pilih EC2:
Buat "node1"
Buat instance pertama Anda ("node1"). Klik Luncurkan Instance:
Pilih distribusi linux Anda. Perangkat lunak cluster yang digunakan nanti mendukung RHEL, SLES, CentOS, dan Oracle Linux. Dalam panduan ini kita akan menggunakan RHEL 7.X:
Ukuran instans Anda sesuai. Untuk tujuan panduan ini dan untuk meminimalkan biaya, ukuran t2.micro digunakan karena memenuhi syarat tingkat gratis. Lihat di sini untuk informasi lebih lanjut tentang ukuran dan harga instans.
Selanjutnya, konfigurasikan detail instance. PENTING: pastikan untuk meluncurkan instance pertama (VM) ini ke dalam "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 subnet mana pun di AWS sudah dipesan 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 nantinya akan direplikasi antar node.
CATATAN: Anda TIDAK perlu menambahkan disk ekstra ke node "saksi". Hanya "node1" dan "node2". Tambahkan Volume Baru, dan masukkan 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 contoh pertama di lingkungan AWS Anda, Anda harus membuat pasangan kunci baru. File kunci pribadi perlu disimpan di lokasi yang aman karena akan diperlukan saat Anda melakukan SSH ke dalam 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 us-west-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. Ini harus berukuran persis sama dengan disk yang Anda tambahkan ke Node1:
Berikan tag pada contoh kedua…. “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 ke-2, karena instance ini hanya akan bertindak sebagai saksi cluster, dan tidak akan membuat MySQL online.
Pastikan Anda menerapkannya ke "Subnet3" (zona ketersediaan us-west-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 node saksi:
Mungkin perlu sedikit waktu untuk menyediakan 3 instans Anda. Setelah selesai, Anda akan melihat kemudian terdaftar sebagai berjalan di konsol EC2 Anda:
Langkah 7: Buat IP Elastis
Selanjutnya, buat Elastic IP, yang merupakan alamat IP publik yang akan digunakan untuk terhubung ke instans Anda dari dunia luar. Pilih Elastic IPs di menu sebelah kiri, lalu klik “Allocate New Address”:
Pilih Elastic IP yang baru dibuat, klik kanan, dan pilih "Associate Address":
Kaitkan IP Elastis ini dengan Node1:
Ulangi ini untuk dua contoh lainnya jika Anda ingin mereka memiliki akses internet atau dapat menggunakan SSH / VNC secara langsung.
Langkah 8: buat Route Entry untuk Virtual IP
Pada titik ini, ketiga instance telah dibuat, dan tabel rute perlu diperbarui sekali lagi agar IP Virtual cluster berfungsi. Dalam konfigurasi kluster multi-subnet ini, IP Virtual harus berada di luar rentang CIDR yang dialokasikan ke VPC Anda.
Tentukan rute baru yang akan mengarahkan lalu lintas ke IP Virtual cluster (10.1.0.10) ke node cluster utama (Node1)
Dari Dasbor VPC, pilih Tabel Rute, klik Edit. Tambahkan rute untuk "10.1.0.10/32" dengan tujuan Node1:
Langkah 9: Nonaktifkan Pemeriksaan Sumber / Tujuan untuk ENI
Selanjutnya, nonaktifkan Pemeriksaan Sumber / Tujuan untuk Antarmuka Jaringan Elastis (ENI) dari node cluster Anda. Ini diperlukan agar instance menerima paket jaringan untuk alamat IP virtual cluster.
Lakukan ini untuk semua ENI.
Pilih “Network Interfaces”, klik kanan pada ENI, dan pilih “Change Source / Dest Check”.
Pilih "Disabled":
Langkah 10: Dapatkan ID Kunci Akses dan Kunci Akses Rahasia
Nanti di panduan, perangkat lunak klaster akan menggunakan AWS Command Line Interface (CLI) untuk memanipulasi entri tabel rute untuk IP Virtual klaster untuk mengarahkan lalu lintas ke simpul klaster aktif. Agar ini berfungsi, Anda perlu mendapatkan ID Kunci Akses dan Kunci Akses Rahasia agar AWS CLI dapat mengautentikasi dengan benar.
Di kanan atas Dasbor EC2, klik nama Anda, dan di bawahnya pilih "Kredensial Keamanan" dari drop-down:
Perluas bagian "Access Keys (Access Key ID and Secret Access Key)" pada tabel, dan klik "Create New Access Key". Unduh File Kunci dan simpan file di lokasi yang aman.
Langkah 11: Konfigurasi OS Linux
Hubungkan ke instance linux:
Untuk terhubung ke instance linux yang baru Anda buat (melalui SSH), klik kanan pada instance tersebut dan pilih "Hubungkan". Ini akan menampilkan instruksi untuk menghubungkan ke instance. Anda akan membutuhkan File Kunci Pribadi yang Anda buat / unduh pada langkah sebelumnya:
Contoh:
Di sinilah kita akan meninggalkan Dasbor EC2 sebentar dan mengotori baris perintah, yang sebagai administrator Linux Anda harus terbiasa sekarang.
Anda tidak diberi kata sandi root untuk VM Linux Anda di AWS (atau akun "pengguna ec2" default juga), jadi setelah Anda terhubung, gunakan perintah "sudo" untuk mendapatkan hak akses root:
$ sudo su –
Kecuali Anda sudah memiliki penyiapan server DNS, Anda pasti ingin membuat entri file host di ketiga server tersebut sehingga keduanya dapat menyelesaikan satu sama lain dengan benar menggunakan nameEdit / etc / hosts
Tambahkan baris berikut ke akhir file / etc / hosts Anda:
10.0.0.4 node1
10.0.1.4 node2
10.0.2.4 saksi
10.1.0.10 mysql-vip
Nonaktifkan SELinux
Edit / etc / sysconfig / linux dan setel “SELINUX = disabled”:
# Vi / etc / sysconfig / selinux
# File ini mengontrol status SELinux pada sistem. # SELINUX = dapat mengambil salah satu dari tiga nilai berikut:
# Menegakkan – kebijakan keamanan SELinux diterapkan.
# Permissive – SELinux mencetak peringatan, bukan menegakkan.
# dinonaktifkan – Tidak ada kebijakan SELinux yang dimuat.
SELINUX = dinonaktifkan
# SELINUXTYPE = dapat mengambil salah satu dari dua nilai ini:
# Target – Proses yang ditargetkan dilindungi, # ml – Perlindungan Keamanan Multi Level.
SELINUXTYPE = ditargetkan
Setel Nama Inang
Secara default, instance Linux ini akan memiliki nama host yang didasarkan pada alamat IP server, seperti "ip-10-0-0-4.us-west-2.compute.internal"
Anda mungkin memperhatikan bahwa jika Anda mencoba mengubah nama host dengan cara "normal" (yaitu mengedit / etc / sysconfig / network, dll), setelah setiap boot ulang, itu akan kembali ke aslinya !! Saya menemukan utas bagus di forum diskusi AWS yang menjelaskan cara mendapatkan nama host agar tetap statis setelah reboot.
Detail di sini: https://forums.aws.amazon.com/message.jspa?messageID=560446
Beri komentar pada modul yang menyetel nama host di file “/etc/cloud/cloud.cfg”. Modul berikut dapat dikomentari menggunakan #.
# – set_hostname
# – update_hostname
Selanjutnya, ubah juga nama host Anda di / etc / hostname.
Mulai Ulang Node Kluster
Reboot semua 3 instance sehingga SELinux dinonaktifkan, dan perubahan nama host berlaku.
Instal dan Konfigurasi VNC (dan paket terkait)
Untuk mengakses GUI server linux kami, dan untuk kemudian menginstal dan mengkonfigurasi cluster kami, instal server VNC, serta beberapa paket lain yang diperlukan (software cluster memerlukan redhat-lsb dan patch rpms).
# Yum groupinstall "X Window System"
# Yum groupinstall “Server dengan GUI”
# Yum install tigervnc-server xterm wget unzip patch redhat-lsb
# Vncpasswd
URL berikut adalah panduan hebat untuk menjalankan Server VNC di RHEL 7 / CentOS 7: Untuk RHEL 7.x / CentOS7.x:
CATATAN: Contoh konfigurasi ini menjalankan VNC pada tampilan 2 (: 2, alias port 5902) dan sebagai root (tidak aman). Sesuaikan seperlunya!
# Cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.serv
# Vi /etc/systemd/system/vncserver@:2.service
[Service]
Ketik = garpu
# Bersihkan semua file yang ada di lingkungan /tmp/.X11-unix ExecStartPre = / bin / sh -c ‘/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : '
ExecStart = / sbin / runuser -l root –c “/ usr / bin / vncserver% i –geometry 1024 × 768” PIDFile = / root / .vnc /% H% i.pid
ExecStop = / bin / sh -c ‘/ usr / bin / vncserver -kill% i> / dev / null 2> & 1 || : '
# Systemctl daemon-reload
# Systemctl aktifkan vncserver @: 2.service
# Vncserver: 2 -geometri 1024 × 768
Untuk sistem RHEL / CentOS 6.x:
# Vi / etc / sysconfig / vncservers
VNCSERVERS = ”2: root” VNCSERVERARGS =[2] ”- geometri 1024 × 768 ″
# Layanan vncserver mulai
# Chkconfig vncserver aktif
Buka klien VNC, dan sambungkan 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 (TIDAK DIANJURKAN UNTUK LINGKUNGAN PRODUKSI):
# Systemctl hentikan firewalld
# Systemctl nonaktifkan firewalld
Partisi dan Format disk "data"
Saat instans linux diluncurkan, dan disk ekstra ditambahkan ke setiap node cluster untuk menyimpan data aplikasi yang akan kami lindungi. Dalam hal ini, ini adalah database MySQL.
Disk kedua akan muncul sebagai / dev / xvdb. Anda dapat menjalankan perintah "fdisk -l" untuk memverifikasi. Anda akan melihatnya
/ dev / xvda (OS) sudah digunakan.
# Fdisk -l
# Mulai Ukuran Akhir Jenis Nama Disk / dev / xvda: 10,7 GB, 10737418240 byte, 20971520 sektor Unit = sektor 1 * 512 = 512 byte
Ukuran sektor (logis / fisik): 512 byte / 512 byte Ukuran I / O (minimum / optimal): 512 byte / 512 byte Jenis label disk: gpt
1 2048 4095 1M Bagian boot BIOS
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 lokasi default untuk MySQL, yaitu
/ 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 tetap ada di memori, sampai Anda memutuskan untuk menulisnya. Hati-hati sebelum menggunakan perintah tulis.
Perangkat tidak berisi tabel partisi yang dikenali
Membangun label disk DOS baru dengan pengenal disk 0x8c16903a.
Perintah (m untuk bantuan): n
Jenis partisi:
p primer (0 primer, 0 diperpanjang, 4 gratis) e diperpanjang
Pilih (p default): hal
Nomor partisi (1-4, default 1): 1
Sektor pertama (2048-4194303, default 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 tipe Linux dan ukuran 2 GiB telah diatur
Perintah (m untuk bantuan): w
Tabel partisi telah diubah!
Memanggil ioctl () untuk membaca kembali tabel partisi. Menyinkronkan disk.
# mkfs.ext4 / dev / xvdb1
# mkdir / var / lib / mysql
Pada node1, pasang sistem file:
# Mount / dev / xvdb1 / var / lib / mysql
Alat API EC2 (EC2 CLI) harus diinstal di setiap node cluster, sehingga perangkat lunak cluster nantinya dapat memanipulasi Tabel Rute, yang memungkinkan konektivitas ke IP Virtual.
Langkah 12: Instal Alat API EC2
URL berikut adalah panduan terbaik untuk menyiapkannya:
http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/set-up-ec2-cli-linux.html
Berikut langkah-langkah utamanya:
Unduh, 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 /
# Ekspor EC2_HOME = ”/ opt / aws”
Jika java belum diinstal (jalankan "java yang mana" untuk diperiksa), instal:
# yum install java-1.8.0-openjdk
# Ekspor JAVA_HOME = ”/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-
Contoh (Berdasarkan konfigurasi default sistem RHEL 7.2. Sesuaikan seperlunya)
Anda akan membutuhkan Kunci Akses AWS dan Kunci Rahasia AWS. Simpan nilai-nilai ini berguna, karena mereka akan dibutuhkan nanti selama pengaturan cluster juga! Lihat URL berikut untuk informasi lebih lanjut:
https://console.aws.amazon.com/iam/home?#security_credential
# Ekspor AWS_ACCESS_KEY = id-kunci-akses-aws-Anda
# Ekspor AWS_SECRET_KEY = kunci-rahasia-aws-Anda
Uji fungsionalitas utilitas CLI:
# / opt / aws / bin / ec2-deskripsikan-region
REGION eu-west-1 ec2.eu-west-1.amazonaws.com
REGION ap-Southeast-1 ec2.ap-southeast-1.amazonaws.com
REGION ap-Southeast-2 ec2.ap-southeast-2.amazonaws.com
REGION eu-central-1 ec2.eu-central-1.amazonaws.com
REGION ap-east-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
Langkah 13: Instal dan Konfigurasi MySQL
Selanjutnya, instal paket MySQL, inisialisasi database sampel, dan setel kata sandi "root" untuk MySQL. Di RHEL7.X, paket MySQL telah diganti dengan paket MariaDB.
Di "node1":
# Yum install 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 –datadi
#
# # CATATAN: Perintah selanjutnya ini memungkinkan koneksi jarak jauh dari host APAPUN. BUKAN # echo “update user set Host =’% ’where Host =’ node1 ′; hak istimewa flush | mysql mys #
# #Setel kata sandi root MySQL ke 'SIOS'
# Echo “perbarui set pengguna Password = PASSWORD (‘ SIOS ’) di mana Pengguna =’ root ’; menyiram
Buat file konfigurasi MySQL. Kami akan menempatkan ini di disk data (yang nanti 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 user = root
port = 3306
# Menonaktifkan tautan simbolik 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
[client] pengguna = kata sandi root = SIOS
Pindahkan file konfigurasi MySQL asli ke samping, jika ada:
# Mv /etc/my.cnf /etc/my.cnf.orig
Pada "node2", Anda HANYA perlu menginstal paket MariaDB / MySQL. Langkah lain tidak diperlukan: Di "node2":
[root@node2 ~]# Yum install mariadb mariadb-server
Langkah 14: Instal dan Konfigurasi Cluster
Pada titik ini, kami siap untuk menginstal dan mengkonfigurasi cluster kami. SIOS Protection Suite for Linux (alias SPS-Linux) akan digunakan dalam panduan ini sebagai teknologi clustering. Ini menyediakan fitur pengelompokan failover ketersediaan tinggi (LifeKeeper) serta replikasi data tingkat blok waktu nyata (DataKeeper) dalam satu solusi terintegrasi. SPS-Linux memungkinkan Anda menerapkan cluster "SANLess", alias cluster "tidak berbagi apa-apa" yang berarti bahwa node cluster tidak memiliki penyimpanan bersama, seperti halnya dengan Instans EC2.
Instal SIOS Protection Suite untuk Linux
Lakukan langkah-langkah berikut pada SEMUA 3 VM (node1, node2, saksi):
Unduh file gambar instalasi SPS-Linux (sps.img) dan dapatkan lisensi uji coba atau beli lisensi permanen. Hubungi SIOS untuk informasi lebih lanjut.
Anda akan me-mount loopback dan menjalankan skrip "setup" di dalamnya, sebagai root (atau "sudo su -" pertama untuk mendapatkan shell root) Misalnya:
# Mkdir / tmp / install
# Mount -o loop sps.img / tmp / install
# Cd / tmp / install
# ./mempersiapkan
Selama skrip penginstalan, 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 "NFS Ketersediaan Tinggi" Anda dapat memilih "n" karena kami tidak akan membuat server NFS yang sangat tersedia
- Menjelang akhir skrip penyiapan, Anda dapat memilih untuk menginstal kunci lisensi uji coba sekarang, atau nanti. Kami akan menginstal kunci lisensi nanti, sehingga Anda dapat dengan aman memilih "n" pada saat ini
- Di layar terakhir dari "pengaturan" pilih ARK (Kit Pemulihan Aplikasi, yaitu "agen cluster") yang ingin Anda instal dari daftar yang ditampilkan di layar.
- ARK HANYA diperlukan di "node1" dan "node2". Anda tidak perlu menginstal pada "saksi". Arahkan daftar dengan panah atas / bawah, dan tekan spasi untuk memilih berikut ini:
-
- lkDR – DataKeeper untuk Linux
- lkSQL – LifeKeeper MySQL RDBMS Recovery Kit
- Ini akan menghasilkan RPM tambahan berikut yang diinstal di "node1" dan "node2":
- steeleye-lkDR-9.0.2-6513.noarch.rpm steeleye-lkSQL-9.0.2-6513.noarch.rpm
-
- ARK HANYA diperlukan di "node1" dan "node2". Anda tidak perlu menginstal pada "saksi". Arahkan daftar dengan panah atas / bawah, dan tekan spasi untuk memilih berikut ini:
Instal paket Saksi / Kuorum
Paket Dukungan Server Kuorum / Saksi untuk LifeKeeper (steeleye-lkQWK) yang digabungkan dengan proses failover yang ada dari inti LifeKeeper memungkinkan terjadinya kegagalan sistem dengan tingkat kepercayaan yang lebih tinggi dalam situasi di mana kegagalan jaringan total dapat terjadi. Ini secara efektif berarti bahwa kegagalan dapat dilakukan sekaligus sangat mengurangi risiko situasi "otak terbelah".
Instal RPM Saksi / Kuorum pada semua 3 node (node1, node2, saksi):
# Cd / tmp / install / quorum
# Rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm
Pada SEMUA 3 node (node1, node2, saksi), edit / etc / default / LifeKeeper, atur NOBCASTPING = 1
HANYA server Saksi ("saksi"), edit / etc / default / LifeKeeper, set WITNESS_MODE = off / tidak ada
Instal Paket Kit Pemulihan EC2
SPS-Linux menyediakan fitur khusus yang memungkinkan sumber daya untuk melakukan failover antar node di berbagai zona dan wilayah ketersediaan. Di sini, EC2 Recovery Kit (yaitu agen cluster) digunakan untuk memanipulasi Tabel Rute sehingga koneksi ke IP Virtual dirutekan ke node cluster 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 tersebut, 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 tersebut, gunakan perintah "lkstart" untuk memulai software cluster:
# / Opt / LifeKeeper / bin / lkstart
Atur Izin Pengguna untuk GUI LifeKeeper
Pada ketiga node tersebut, buat akun pengguna linux baru (misalnya, "tony" dalam contoh ini). Edit / etc / group dan tambahkan pengguna "tony" ke grup "lkadmin" untuk memberikan akses ke GUI LifeKeeper. Secara default, hanya "root" yang merupakan anggota grup, dan kami tidak memiliki 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 (IP Publik) node1. Berdasarkan konfigurasi VNC di atas, Anda akan terhubung ke <Public_IP>: 2 menggunakan sandi VNC yang Anda tentukan sebelumnya. Setelah masuk, buka jendela terminal dan jalankan GUI LifeKeeper menggunakan perintah berikut:
# / Opt / LifeKeeper / bin / lkGUIapp &
Anda akan diminta untuk terhubung ke node cluster pertama Anda ("node1"). Masukkan userid dan kata sandi linux yang ditentukan selama pembuatan VM:
Selanjutnya, sambungkan ke "node2" dan "saksi" dengan mengklik tombol "Sambungkan ke Server" yang disorot di screenshot berikut:
Anda sekarang harus 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" lalu ikuti wizard. Ini akan membuat jalur komunikasi antara:
node1 & node2 node1 & saksi
Jalur komunikasi masih perlu dibuat antara node2 & saksi. Klik kanan pada "node2" dan pilih Buat Jalur Kom. Ikuti wizard dan pilih "saksi" sebagai server jarak jauh:
Pada titik ini jalur komunikasi berikut telah dibuat:
node1 <—> node2 node1 <—> saksi node2 <—> saksi
Ikon di depan server telah berubah dari "tanda centang" hijau menjadi "tanda bahaya" kuning. Ini karena kami hanya memiliki satu jalur komunikasi antar node.
Jika VM memiliki beberapa NIC (informasi tentang pembuatan VM Azure dengan beberapa NIC dapat ditemukan di sini, tetapi tidak akan dibahas dalam artikel ini), Anda akan membuat jalur komunikasi yang berlebihan di antara setiap server.
Untuk menghapus ikon peringatan, buka menu View dan batalkan pilihan "Comm Path Redundancy Warning":
Hasil:
Verifikasi Jalur Komunikasi
Gunakan perintah "lcdstatus" untuk melihat status sumber daya cluster. Jalankan perintah berikut untuk memverifikasi bahwa Anda telah membuat jalur komunikasi dengan benar pada setiap node ke dua server lain yang terlibat:
# / opt / LifeKeeper / bin / lcdstatus -q -d node1
MACHINE NETWORK ADDRESSES / DEVICE STATE 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
MACHINE NETWORK ADDRESSES / DEVICE STATE 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
MACHINE NETWORK ADDRESSES / DEVICE STATE 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
Buat sumber daya klaster Replikasi Data (mis. Cermin)
Selanjutnya, buat sumber Replikasi Data untuk mereplikasi partisi / var / lib / mysql dari node1 (sumber) ke node2 (target). Klik ikon "plus hijau" untuk membuat sumber daya baru:
Ikuti wizard dengan pilihan ini:
Silakan Pilih Kit Pemulihan: Jenis Pengalihan Replikasi Data: cerdas
Server: node1
Jenis Hierarki: Replikasi Sistem File yang Keluar
Mount Point yang Ada: / var / lib / mysql
Tag Sumber Daya Replikasi Data: datarep-mysql
Tab Sumber Daya Sistem File: / var / lib / mysql
File Bitmap: (nilai default)
Aktifkan Replikasi Asinkron: Tidak
Setelah sumber daya dibuat, wizard "Perpanjang" (yaitu tentukan server cadangan) akan muncul.
Gunakan pilihan berikut:
Server Target: node2 Jenis Pengalihan: Prioritas Template Cerdas: 1
Prioritas Target: 10 Disk Target: / dev / xvdb1
Tag Sumber Daya Replikasi Data: datarep-mysql File Bitmap: (nilai default)
Jalur Replikasi: 10.0.0.4/10.0.1.4 Mount Point: / var / lib / mysql
Tag Root: / var / lib / mysql
Cluster akan terlihat seperti ini:
Buat IP Virtual
Selanjutnya, buat sumber cluster Virtual IP. Klik ikon "plus hijau" untuk membuat sumber daya baru:
Ikuti wizard untuk membuat sumber daya IP dengan pilihan berikut:
Pilih Recovery Kit: IP Switchback Type: Intelligent IP Resource: 10.1.0.10
Netmask: 255.255.255.0
Antarmuka Jaringan: eth0
Tag Sumber Daya IP: ip-10.1.0.10
Perluas sumber daya IP dengan pilihan ini:
Jenis Pengalihan: Prioritas Template Cerdas: 1
Prioritas Sasaran: 10
Sumber Daya 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, ping siaran tidak berfungsi. Pada langkah sebelumnya, kami menyetel "NOBCASTPING = 1" di
/ etc / default / LifeKeeper untuk mematikan pemeriksaan ping siaran. Sebagai gantinya, kami akan menentukan 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 IP (ip-10.1.0.10) dan pilih Properties:
Anda akan melihat bahwa awalnya, tidak ada daftar ping yang dikonfigurasi untuk subnet 10.1.0.0 kami. Klik "Ubah Daftar Ping":
Masukkan "10.0.2.4" (alamat IP server saksi kami), klik "Tambahkan alamat" dan terakhir klik "Simpan Daftar":
Anda akan kembali ke panel properti IP, dan dapat memverifikasi bahwa 10.0.2.4 telah ditambahkan ke daftar ping. Klik OK untuk menutup jendela:
Buat hierarki sumber daya MySQL
Selanjutnya, buat sumber daya cluster MySQL. Sumber daya MySQL bertanggung jawab untuk menghentikan / memulai / memantau database MySQL Anda.
Sebelum membuat sumber daya MySQL, pastikan database sudah berjalan. Jalankan “ps -ef | grep sql ”untuk memeriksa.
Jika berjalan, bagus – tidak ada yang bisa dilakukan. Jika tidak, mulai database kembali:
# Mysqld_safe –user = root –socket = / var / lib / mysql / mysql.sock –port = 3306 –datadi
Ikuti wizard dengan untuk membuat sumber daya IP dengan pilihan ini: Untuk membuat, klik ikon "plus hijau" untuk membuat sumber daya baru:
Pilih Recovery Kit: MySQL Database Switchback Type: Intelligent Server: node1
Lokasi my.cnf: / var / lib / mysql
Lokasi MySQL dapat dieksekusi: / usr / bin
Tag Database: mysql
Perluas sumber daya IP dengan pilihan berikut:
Server Target: node2 Jenis Switchback: cerdas Prioritas Templat: 1
Prioritas Sasaran: 10
Hasilnya, cluster Anda akan terlihat seperti berikut. Perhatikan bahwa sumber Replikasi Data dipindahkan secara otomatis di bawah database (ketergantungan dibuat secara otomatis) untuk memastikannya selalu online sebelum database:
Buat sumber daya EC2 untuk mengelola tabel rute setelah failover
SPS-Linux menyediakan fitur khusus yang memungkinkan sumber daya untuk melakukan failover antar node di berbagai zona dan wilayah ketersediaan. Di sini, EC2 Recovery Kit (yaitu agen cluster) digunakan untuk memanipulasi Tabel Rute sehingga koneksi ke IP Virtual dirutekan ke node cluster aktif.
Untuk membuat, klik ikon "plus hijau" untuk membuat sumber daya baru:
Ikuti wizard untuk membuat sumber daya EC2 dengan pilihan berikut:
Pilih Recovery Kit: Amazon EC2 Switchback Type: Intelligent Server: node1
Beranda EC2: / opt / aws
URL EC2: ec2.us-west-2.amazonaws.com
AWS Access Key: (masukkan Access Key yang diperoleh sebelumnya) AWS Secret Key: (masukkan Secret Key yang diperoleh sebelumnya) EC2 Resource Type: RouteTable (Backend cluster)
Sumber Daya IP: ip-10.1.0.10
Tag Sumber Daya EC2: ec2-10.1.0.10
Perluas sumber daya IP dengan pilihan berikut:
Server Target: node2 Jenis Switchback: cerdas Prioritas Templat: 1
Prioritas Sasaran: 10
Tag Sumber Daya EC2: ec2-10.1.0.10
Cluster akan terlihat seperti ini. Perhatikan bagaimana sumber daya EC2 berada 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 satu grup. Klik kanan pada resource "mysql" dan pilih "Create Dependency":
Pada layar berikut, pilih sumber daya "ip-10.1.0.10" sebagai ketergantungan. Klik Berikutnya dan lanjutkan melalui wizard:
Pada titik ini konfigurasi cluster SPS-Linux selesai. Hierarki sumber daya akan terlihat sebagai berikut:
Langkah 15: Uji Konektivitas Cluster
Pada titik ini, semua konfigurasi Amazon EC2 dan Cluster kami sudah selesai! Sumber daya cluster saat ini aktif di 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@witness ~]# Yum -y instal mysql
Uji konektivitas MySQL ke cluster:
[root@witness ~]# Mysql –host = 10.1.0.10 mysql -u root -p
Jalankan kueri MySQL berikut untuk menampilkan nama host dari node cluster aktif:
MariaDB>[mysql] pilih @@ nama host;
++
| @@ nama host |
++
| node1 |
++
1 baris dalam set (0,00 dtk) MariaD[mysql]B>
Menggunakan GUI LifeKeeper, failover dari Node1 -> Node2 ″. Klik kanan pada sumber daya mysql di bawah node2, dan pilih "Dalam Layanan …":
Setelah failover selesai, jalankan kembali kueri MySQL. Anda akan melihat bahwa klien MySQL telah mendeteksi bahwa sesi tersebut hilang (selama failover) dan secara otomatis terhubung kembali:
Jalankan kueri MySQL berikut untuk menampilkan nama host dari node cluster aktif, memverifikasi bahwa sekarang "node2" aktif:
MariaDB>[mysql] pilih @@ nama host;
ERROR 2006 (HY000): Server MySQL telah hilang Tidak ada koneksi. Mencoba menyambung kembali…
ID koneksi: 12
Database saat ini: mysql
++
| @@ nama host |
++
| node2 |
++
1 baris dalam set (0,53 dtk) MariaD[mysql]B>
Direproduksi dengan izin dari SIOS