Cara Mengatur cluster WordPress untuk situs besar

0
34
cluster wp

Jika Anda memiliki situs besar, kemungkinan Anda juga melakukan banyak pemrosesan data – impor, ekspor, perhitungan dll.

Jenis pekerjaan pemrosesan batch yang memaksimalkan CPU dan disk adalah musuh bebuyutan dari transaksi real-time. Pengunjung web Anda menuntut interaksi waktu nyata dan respons cepat dari situs Anda, jadi jika Anda menjalankan impor dan memaksimalkan CPU dan disk Anda di server yang sama dengan hosting lalu lintas web Anda, maka pengguna Anda secara teratur akan menghadapi kelambatan. Hal ini menyebabkan hilangnya minat dari pengunjung Anda, kehilangan penjualan dan hilangnya peringkat SEO.

Pada akhirnya, untuk mengatasi ini, Anda perlu merancang solusi yang lebih baik – Anda perlu memisahkan pemrosesan batch dari hal-hal realtime. Itu berarti Anda membutuhkan minimal 2 server. 1 server memproses semua impor data, ekspor, perhitungan, jumlah kategori, dll – data direplikasi ke server ke-2 dan server itu melayani lalu lintas web Anda.

Jika Anda ingin mendapatkan 2 server, lebih baik Anda melangkah lebih jauh dan mendapatkan 3 server. Sangat sedikit kerumitan tambahan dan kemudian memberi Anda kemampuan untuk memiliki 3 server online sekaligus tanpa pemrosesan batch, atau 1 atau 2 server yang menangani pemrosesan batch dan sisanya melayani traffic web.

Dengan menggunakan model ini, Anda juga dapat dengan mudah beralih server offline untuk memutakhirkannya tanpa mengganggu pengunjung ke situs web Anda. Itu berarti Anda dapat online 100% dari waktu!

Perhatikan bahwa pengaturan ini secara teknis menggunakan 4 server – server ke-4 menjadi penyeimbang beban. Alih-alih server ini, Anda bisa menggunakan fitur / server penyeimbang beban Laut Digital tetapi saya memberikan detail di bawah ini untuk menginstal ini dengan mudah.

Panduan langkah demi langkah untuk membangun cluster Anda

Ini adalah panduan yang saya gunakan untuk menginstal cluster ini, jadi semoga membantu beberapa dari Anda yang ingin menjadi besar dengan situs WordPress Anda.

Buat 3 server Ubuntu 16.04

Saya suka Digital Ocean, jadi panduan ini menggunakan hosting mereka, tetapi Anda dapat menggunakan host apa pun asalkan mereka menawarkan jaringan pribadi dan Ubuntu 16.04.

Buat 3 Ubuntu 16.04 (atau 3 server pada platform apa saja) – mereka membuatnya mudah untuk membuat banyak sekaligus – pastikan untuk mengaktifkan jaringan pribadi dan tambahkan kunci ssh Anda.


Instal PerconaDB XtraDB Cluster di cluster-node Anda

Masuk ke 3 droplet Anda dan jalankan perintah berikut pada setiap node:

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb

dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb

apt-get update

apt-get upgrade

apt-get install percona-xtradb-cluster-57

Catatan: Anda akan diminta memasukkan kata sandi root baru untuk cluster. Untuk membuat hidup lebih mudah, gunakan kata sandi yang sama untuk setiap simpul PerconaDB, atau biarkan kata sandi root kosong dan itu akan menyimpulkan keamanan jika Anda masuk sebagai root dan terhubung.

Konfigurasikan jaringan pribadi

Kami ingin agar node berbagi data melalui jaringan pribadi, bukan keluar dan masuk dari perusahaan hosting Anda. Ini mencegah biaya bandwidth gila, mempercepat dan meningkatkan keamanan.

Meskipun jaringan pribadi sudah diaktifkan, kita harus dapat menggunakan eth1 (alih-alih eth0) sebagai perangkat jaringan pribadi.

Pada setiap node edit file jaringan grub. Saya lebih suka vi untuk mengedit file, tetapi Anda dapat menggunakan nano atau bahkan mengedit file dengan Filezilla.

vi /etc/default/grub.d/50-cloudimg-settings.cfg

Temukan garis yang dimulai GRUB_CMDLINE_LINUX_DEFAULT dan ubah sebagai berikut (add net.ifnames=0):

GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 net.ifnames=0"


Simpan file kemudian jalankan perintah pembaruan grub dan reboot (hanya waktu saya tahu di mana Anda perlu me-reboot kotak linux!).

update-grub
shutdown -r now

Ulangi langkah di atas untuk semua simpul Anda. Kemudian Anda dapat memeriksa konfigurasi dengan ini:

ifconfig -a

Anda harus melihat alamat IP publik terhadap eth0 dan alamat pribadi terhadap eth1.

Anda juga dapat melihat setiap konfigurasi perangkat ethernet di sini:

cat /etc/network/interfaces.d/50-cloud-init.cfg

File di atas sudah akan dikonfigurasikan jika Anda memilih jaringan pribadi ketika Anda membuat tetesan.

Catat alamat IP pribadi untuk masing-masing 3 node Anda. Informasi ini juga tersedia dari antarmuka Laut Digital Anda ketika Anda mengklik ke setiap tetesan.

Anda dapat menguji jaringan pribadi berfungsi dengan melakukan ping ke alamat IP pribadi dari node lain dari salah satu node:

ping 10.130.45.161

Konfigurasikan replikasi

Pertama, kita membutuhkan pengguna replikasi. Buat pengguna ini di ketiga node.

Masuk ke mysql:

mysql

atau jika Anda memilih kata sandi untuk server mysql Anda sebelumnya, gunakan ini:

mysql -u root -p

Masukkan kata sandi DB root yang Anda pilih sebelumnya lalu buat pengguna baru untuk tujuan replikasi (pilih kata sandi yang kuat dan catat sehingga kami dapat menambahkannya ke file konfigurasi):

CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'password';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;

Selanjutnya keluar dari MySQL dengan mengetikkan ‘keluar’ lalu menekan enter, lalu hentikan MySQL pada ketiga node menggunakan:

service mysql stop

Pada node1, sesuaikan file konfigurasi di bawah ini sesuai dengan alamat IP pribadi Anda dan kata sandi pengguna replikasi masukkan ke dalam file ini:

vi /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf
  1. Masukkan 3 alamat IP pribadi untuk wsrep_cluster_address, dipisahkan dengan koma.
  2. Masukkan simpul 1 alamat IP pribadi untuk wsrep_node_address.
  3. Masukkan kata sandi pertama untuk wsrep_sst_auth.
  4. Ubah nama node pada baris wsrep_node_name

File Anda pada akhirnya akan terlihat seperti ini (baris dengan huruf tebal adalah baris yang perlu Anda ubah dari konfigurasi default):

[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib/galera3/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://10.130.45.161,10.130.47.4,10.130.47.11
			
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# Slave thread to use
wsrep_slave_threads= 8
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
wsrep_node_address=10.130.45.161
			
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified, then system hostname will be used
wsrep_node_name=pxc-cluster-node-1
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
# SST method
wsrep_sst_method=xtrabackup-v2
#Authentication for SST method
wsrep_sst_auth="sstuser:password"
			


Catatan: Anda juga harus menghapus # komentar dari awal baris dengan wsrep_node_address dan wsrep_sst_auth.

Salin konten file dan kemudian simpan. Konfigurasikan simpul 2 dan simpul 3 dengan mengedit file yang sama pada simpul tersebut dan mengubah 2 baris dari file di atas:

  1. Ubah wsrep_node_address menjadi alamat IP pribadi simpul 2 (atau simpul 3 untuk simpul itu)
  2. Ubah wsrep_node_name menjadi pxc-cluster-node-2 atau pxc-cluster-node-3

Setelah selesai, Anda siap untuk mem-bootstrap kluster Anda.

Bootstrap cluster Anda

Pada simpul 1, jalankan perintah berikut:

/etc/init.d/mysql bootstrap-pxc

Periksa apakah itu berjalan dengan masuk ke mysql dan jalankan perintah ini:

show status like 'wsrep%';

Catatan: Perintah di atas dapat berguna di masa depan untuk memeriksa status replikasi – Anda dapat melihat hal-hal seperti berapa banyak item yang antri untuk direplikasi di antara detail lainnya.

Pada simpul 2 dan 3, jalankan yang berikut ini:

/etc/init.d/mysql start

Anda sekarang memiliki cluster Percona dengan 3 node mereplikasi data satu sama lain.

Instal Nginx dan PHP 7 di ketiga node

Di setiap node, instal Nginx dan PHP 7 menggunakan urutan perintah berikut:

apt-get install nginx
apt-get install php7.0
apt-get install php7.0-curl 
apt-get install php7.0-gd 
apt-get install php7.0-intl 
apt-get install php7.0-mysql 
apt-get install php-memcached
apt-get install php7.0-mbstring
apt-get install php7.0-zip
apt-get install php7.0-xml
apt-get install php7.0-mcrypt
apt-get install unzip

Cara yang lebih cepat untuk menjalankan semua hal di atas adalah menggunakan baris tunggal ini:

apt-get install -y nginx php7.0 php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php-memcached php7.0-mbstring php7.0-zip php7.0-xml php7.0-mcrypt unzip

Instal GlusterFS untuk replikasi file

GlusterFS memberi kami jaminan bahwa semua node melihat file yang sama. Dalam konfigurasi di bawah ini, setiap node akan memiliki salinan lengkap dari semua file dari node lain, TETAPI jika Anda memutuskan untuk memperluas ini ke luar, Anda akan mulai melihat penghematan ruang. Misalnya, jika file WordPress Anda mengambil 90GB maka dengan 3 node, 90GB akan digunakan per node.

Jika Anda memiliki 9 node, maka setiap node hanya akan menggunakan 30GB untuk menyimpan 90GB di seluruh GlusterFS.

Cara untuk berpikir tentang ini adalah bahwa di seluruh jaringan file GlusterFS, ada 3 salinan dari setiap file untuk tujuan redundansi. Kemudian jika 1 node dihapus dari cluster GlusterFS, file akan disalin ke node lain untuk membawa kembali cluster untuk memiliki redundansi rangkap tiga.

Jalankan perintah berikut pada setiap node:

sudo add-apt-repository ppa:gluster/glusterfs-3.10
apt-get install glusterfs-server
apt-get install attr

Kemudian jalankan perintah berikut pada simpul 1, sesuaikan alamat IP menjadi alamat IP pribadi dari simpul 2 dan simpul 3 di jaringan Anda:

gluster peer probe 10.130.47.4
gluster peer probe 10.130.47.11

Kemudian buat volume kilau dengan menjalankan perintah di bawah ini dengan alamat IP yang diubah ke alamat IP pribadi dari node 1, 2 dan 3 di jaringan Anda:

gluster volume create glustervolume replica 3 transport tcp 10.130.45.161:/gluster-storage 10.130.47.4:/gluster-storage 10.130.47.11:/gluster-storage force
gluster volume start glustervolume

Catatan: Anda dapat mengurangi nomor replika jika Anda menginginkan sistem file yang lebih cepat tetapi redundansi akan diturunkan. Sebagai contoh, dengan konfigurasi 4-simpul, replika 2 berarti 2 dari simpul tersebut dapat mati dan Anda masih dapat membangun kembali sistem file Anda. Jika 3 mati, Anda kurang beruntung. Berikut adalah contoh konfigurasi 4 simpul:

gluster volume create glustervolume replica 2 transport tcp 10.132.110.166:/gluster-storage 10.132.118.208:/gluster-storage 10.132.120.187:/gluster-storage 10.132.121.38:/gluster-storage force

Anda dapat mengetahui lebih lanjut tentang perintah yang tersedia di sini:

http://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/

Kemudian pada setiap node, buat folder dan pasang folder itu, menautkannya ke glustervolume:

mkdir /var/www/wpicluster -p
mount -t glusterfs localhost:/glustervolume /var/www/wpicluster

Anda sekarang memiliki cluster file redundan gluster di mana kita dapat menginstal WordPress.

Instal Unison untuk replikasi file

Setelah banyak pengujian, GlusterFS tidak cocok untuk replikasi file WordPress. GlusterFS memperlambat BANYAK ketika ada banyak file di setiap direktori. Panduan ini telah diperbarui untuk menggunakan Serentak saja. Penyiapan serentak ini menggunakan skema bintang untuk replikasi file, dengan simpul 1 di tengah bintang.

node 1 <--> node 2 file replication    
node 1 <--> node 3 file replication

Itu berarti file edit pada simpul 3 akan mereplikasi ke simpul 1 dan kemudian ke simpul 2. Edit file pada simpul 1 akan mereplikasi langsung ke simpul 2 dan 3. Karena itu, masuk akal untuk membuat simpul 1 wp-admin kami server tempat kami mengunggah file plugin. Karena skema bintang ini untuk replikasi file, simpul 1 adalah simpul terpenting Anda. Jika turun, atau Anda mematikannya, replikasi file akan dijeda hingga Anda membawanya kembali online.

Di setiap node, instal bersamaan:

apt-get -y install unison openssh-server

Ini akan memungkinkan kita untuk menjalankan perintah replikasi nanti setelah kita menginstal file WordPress.

Konfigurasikan SSH agar node dapat terhubung satu sama lain

Diperlukan akses SSH agar Unison dapat mereplikasi file. Jalankan yang berikut di ketiga node:

ssh-keygen

Tekan enter 3 kali untuk menerima 3 default termasuk 2 kata sandi kosong untuk keyfile sehingga berfungsi non-interaktif

Sekarang, ambil salinan file id_rsa.pub untuk setiap node dan tempelkan ke file 2 node yang diotorisasi lainnya. Temukan kunci publik dari setiap node dengan menjalankan perintah ini:

cat /root/.ssh/id_rsa.pub

Kemudian tempelkan kunci publik tersebut ke file 2_domain_kunci resmi lainnya:

vi /root/.ssh/authorized_keys

Otentikasi setiap node

Pada simpul 1, jalankan:

ssh ipofnode2
ssh ipofnode3

Anda akan ditanya apakah Anda ingin mempercayai simpul lain. Jawab ya.

Ulangi ini pada simpul 2 dan simpul 3, menghubungkan ke 2 simpul lainnya.

Replikasi file folder web menggunakan Unison

Sekarang kita memiliki otentikasi ssh, kita dapat mengatur Unison untuk mereplikasi file situs web ke simpul 2 dan 3. Jalankan perintah berikut pada simpul 1 dari kluster Anda:

unison /var/www ssh://10.130.47.4//var/www -owner -group    
unison /var/www ssh://10.130.47.11//var/www -owner -group

Catatan: ganti alamat IP dengan Anda sendiri dan nama folder dengan Anda sendiri.

Karena Anda belum memiliki file di / var / www, perintah ini akan selesai dengan cepat.

Sekarang atur pekerjaan crontab / cron untuk Unison. Jalankan perintah berikut:

crontab -e

Pilih editor apa pun yang Anda inginkan ketika meminta Anda kemudian tambahkan yang berikut ke akhir file:

* * * * * unison -batch /var/www ssh://10.130.47.4//var/www &> /dev/null    
* * * * * unison -batch /var/www ssh://10.130.47.11//var/www &> /dev/null

Ubah alamat IP dan lokasi folder. Gunakan alamat IP internal sehingga lalu lintas melewati kartu jaringan internal yang lebih cepat.

Instal file WordPress ke Node 1 saja

Karena kami menggunakan replikasi file dan kami sudah memiliki replikasi database di cluster kami, kami hanya perlu menginstal WordPress ke node 1. Pada node 1, jalankan yang berikut:

wget https://wordpress.org/latest.zip -P /var/www/
unzip /var/www/latest.zip -d /var/www/
mv /var/www/wordpress /var/www/wpicluster
chown www-data:www-data /var/www/wpicluster -R
rm /var/www/latest.zip

Catatan: Alih-alih / var / www / wpicluster Anda bisa menggunakan /var/www/domainanda.com tetapi jika Anda melakukannya, pastikan Anda mengubah file konfigurasi nginx di bagian berikutnya.

Konfigurasikan Nginx untuk memuat situs WordPress Anda pada setiap node

Saya telah membuat beberapa file konfigurasi untuk membuat bagian ini lebih cepat dan mudah. File konfigurasi mengatur Nginx agar berfungsi di atas port 80 – nanti, kami akan menambahkan SSL ke load balancer kami. Ini mengurangi beban pada server kami karena mereka tidak perlu mendekripsi lalu lintas SSL.

File konfigurasi di sini juga mengkonfigurasi Nginx fastcgi-cache, jadi Anda tidak perlu menginstal Varnish. Mereka juga nama domain yang independen, jadi tidak diperlukan konfigurasi.

Pada ketiga node, jalankan perintah berikut:

git clone https://github.com/dhilditch/wordpress-cluster /root/wordpress-cluster/
cp /root/wordpress-cluster/etc/nginx/* -R /etc/nginx/
ln -s /etc/nginx/sites-available/wpintense.cluster.conf /etc/nginx/sites-enabled/
mkdir /sites/wpicluster/cache -p
service nginx restart

Siapkan Load Balancer Anda

Digital Ocean menyediakan penyeimbang beban, tetapi dengan pendekatan itu Anda harus memperbarui sertifikat SSL secara manual. Plus Anda mendapatkan lebih sedikit kontrol – kami ingin kontrol sehingga kami dapat mengirim lalu lintas wp-admin ke simpul 1. Jadi ikuti petunjuk di bawah ini untuk mengatur penyeimbang beban Anda sendiri.

Pertama, buat tetesan dengan Ubuntu 16.04 lagi, jaringan pribadi dan kunci SSH Anda.

Kemudian masuk ke tetesan penyeimbang beban Anda dan jalankan perintah berikut:

add-apt-repository ppa:nginx/stable
apt-get update
apt-get install nginx

Kemudian buat file baru di /etc/nginx/conf.d/loadbalancer.conf.

vi /etc/nginx/conf.d/loadbalancer.conf

Ini akan secara otomatis dimuat ketika Anda me-restart nginx. Masukkan yang berikut dalam file, disesuaikan dengan alamat IP pribadi Anda.

upstream clusterwpadmin {
 server 10.130.45.161; 
}
upstream clusternodes {
 ip_hash;
 server 10.130.47.4 max_fails=3; 
 server 10.130.47.11 max_fails=3;
}
server {
 listen 80;
# this block is for letsencrypt
 root /var/www/html;
 location ~ /.well-known {
  allow all;
  try_files $uri $uri/ =404;
 } 
 server_name _;
 #return 301 https://$host$request_uri;
 location ~ /wp-(admin/|login\.php\b|cron\.php) {
 proxy_pass http://clusterwpadmin;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 }
location / {
 proxy_pass http://clusternodes;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 }
}
server {
 listen 443 ssl;
 #ssl_certificate /etc/letsencrypt/live/yourdomain.com/cert.pem;
 #ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location ~ /wp-(admin/|login\.php\b|cron\.php) { 
 proxy_pass http://clusterwpadmin; 
 proxy_set_header X-Forwarded-Host $host; 
 proxy_set_header X-Forwarded-Server $host; 
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 proxy_set_header X-Forwarded-Proto $scheme; 
 proxy_set_header X-Real-IP $remote_addr; 
 proxy_set_header Host $host; 
 }
location / {
 proxy_pass http://clusternodes;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 }
}
#if a user connects to yourdomain.com:9443 they will be directed to node 1. This is where admins should connect to add plugins etc.
server {
 listen 9443 ssl;
 server_name _;
 #ssl_certificate /etc/letsencrypt/live/yourdomain.com/cert.pem;
 #ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
 proxy_pass http://clusterwpadmin;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;
 }
}

Simpan file itu maka Anda dapat me-restart nginx menggunakan:

service nginx restart

Sekarang, masuk ke penyedia DNS Anda dan arahkan nama domain baru Anda di alamat IP publik dari node loadbalancer Anda.

Konfigurasikan WordPress

Sekarang setelah kita memiliki basis data dan replikasi file yang diatur, dan penyeimbang beban, kita dapat memulai instalasi WordPress 5 menit.

Pada node 1, sambungkan ke mysql menggunakan:

mysql -p (or just mysql if no root password)

Catatan: Anda akan dimintai kata sandi, jadi tempel di – klik kanan pada dempul adalah tempel, dan sepertinya tidak terjadi apa-apa karena ini adalah bidang kata sandi, tetapi itu menempel.

create database wpicluster;
grant all privileges on wpicluster.* to wpi@localhost identified by 'CHOOSEASTRONGPASSWORD';

Kunjungi URL yang Anda pilih sebelumnya untuk loadbalancer Anda, mis. http://www.domainanda.com.

Pilih bahasa Anda, lalu masukkan nama database: wpicluster, nama pengguna: wpi dan kata sandi yang Anda pilih dalam perintah GRANT di atas.

 

Siapkan WordPress Cron hanya pada simpul 1

WP Cron sangat buruk. Itu bergantung pada pengguna yang mengunjungi situs Anda untuk menjalankan tugas yang dijadwalkan. Dalam hal ini, kami bahkan tidak ingin pekerjaan terjadwal berjalan pada node 2 atau 3, jadi kami akan menonaktifkan wp cron di semua node dan kemudian menerapkan pekerjaan cron nyata pada node 1.

Pada node 1, edit /var/www/wpicluster/wp-config.php. Edit file ini akan mereplikasi ke node Anda yang lain.

vi /var/www/wpicluster/wp-config.php

dan masukkan baris berikut di suatu tempat:

define('WP_DISABLE_CRON', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
 $_SERVER['HTTPS']='on';
}

Catatan: Hanya baris pertama yang menonaktifkan WP_CRON. Sisanya adalah untuk nanti ketika kami meneruskan lalu lintas dari penyeimbang beban kami dan kami ingin memastikan WordPress tahu untuk server file statis melalui HTTPS jika itu yang diminta pengguna.

Jika Anda kesulitan untuk menemukan di mana harus meletakkan kode ini, Anda dapat menempelnya setelah mendefinisikan (‘DB_NAME’,….); baris.

Pembaruan wp-config.php ini akan mereplikasi ke node lain menggunakan GlusterFS, sehingga Anda tidak perlu memodifikasi ini di node lain.

Sekarang jalankan:

crontab -e

Dan tambahkan baris tambahan sebagai berikut:

* * * * * wget http://yourdomain.com:9443/wp-cron.php?doing_cron &> /dev/null

Siapkan SSL pada penyeimbang beban Anda

Sekarang dapatkan sertifikat SSL gratis Anda dari LetsEncrypt. Pada simpul penyeimbang beban Anda, jalankan yang berikut:

add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot
certbot certonly --webroot --webroot-path=/var/www/html -d yourdomain.com -d www.yourdomain.com

Anda harus mendapatkan catatan yang memberitahukan Anda SELAMAT. Ini juga akan memberi tahu Anda lokasi file kunci disimpan. Sekarang edit file loadbalancer.conf dari sebelumnya untuk mengatur SSL. (Instalasi WordPress tidak berfungsi dengan baik di atas SSL yang mengapa kami menambahkan SSL setelah instalasi)

vi /etc/nginx/conf.d/loadbalancer.conf

Batalkan komentar pada ssl_certificate (x2) dan ssl_certificate_key (x2) baris dan ganti path dengan path yang disediakan oleh output dari LetsEncrypt.

Batalkan komentar baris “return 301 https://$host$request_uri;”

service nginx restart

Setelah Anda mengedit file loadbalancer.conf dan me-restart nginx, Anda akan memiliki sertifikat SSL yang berfungsi pada load balancer Anda.

Catatan: Pada titik ini, jika Anda mengakses situs web Anda dengan https, beberapa CSS akan tampak rusak. Ada satu tahap terakhir yang harus kita selesaikan untuk memperbaikinya, yang hampir merupakan langkah terakhir dalam seluruh proses.

Perbarui URL Situs Anda di WordPress

Masuk ke node1.yourdomain.com. Kunjungi dasbor WordPress, lalu Pengaturan-> Umum.

Anda akan melihat 2 entri domain, yang keduanya mungkin saat ini terkait dengan subdomain node 1 Anda, dan keduanya akan menjadi http dan bukan https.

Ganti kedua entri ini dengan https://www.domainanda.com.


Catatan: Di sini Anda memasukkan nama domain yang Anda pilih untuk penyeimbang beban Anda, biasanya www.domainanda.com atau serupa.

Jika Anda belum melakukannya, edit file wp-config.php Anda pada Node 1 dan tepat di bawah tempat Anda menonaktifkan WP_CRON, tambahkan baris berikut:

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
  $_SERVER['HTTPS']='on';
}

Lalu lintas dilayani lebih dari https untuk pengguna Anda, tetapi karena itu adalah http polos pada setiap node (antara penyeimbang beban dan node Anda), Anda perlu memastikan WordPress tahu itu HTTPS sehingga semua file statis dimuat dengan benar di atas HTTPS.

Majulah dan taklukkan!

Itu saja, tugas raksasa selesai.

Anda dapat mengunjungi wp-admin dari server mana pun, tetapi Anda juga dapat memaksa lalu lintas ke simpul 1 untuk keperluan admin Anda sendiri dengan mengunjungi https://www.yourdomain.com:9443/wp-admin/. Dengan konfigurasi di atas, simpul 1 tidak pernah melayani lalu lintas ke pengguna front-end, sehingga Anda dapat menjalankan semua jenis pekerjaan admin di sana tanpa berdampak memperlambat lalu lintas pengguna.