Berbagi teknologi

Haproxy membangun cluster web

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: Analisis kasus

1: Ikhtisar kasus

2: Pengetahuan pra-kasus

3: Lingkungan kasus

2: Implementasi kasus

1: Kompilasi dan instal server nginx (langkah-langkah untuk kedua situs web nginx sama persis, hanya halaman pengujiannya yang berbeda)

[root@localhost ~]# yum -y instal pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --dengan-http_stub_status_module

[root@localhost nginx-1.12.0]# buat dan buat instal

[root@localhost nginx-1.12.0]# ln -s /usr/lokal/nginx/sbin/nginx /usr/lokal/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "uji web01" > uji.html

[root@localhost ~]# systemctl hentikan firewalld

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Mulai proses nginx

[root@localhost ~]# netstat -anpt | grep nginx

2: Kompilasi dan instal Haproxy

[root@localhost ~]# systemctl hentikan firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y instal pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# buat TARGET=linux26

[root@localhost haproxy-1.5.19]# buat instal

Catatan:

linux22 untuk Linux 2.2

linux24 untuk Linux 2.4 dan di atasnya (default)

linux24e untuk Linux 2.4 dengan dukungan epoll yang berfungsi (> 0.21)

linux26 untuk Linux 2.6 dan di atasnya

solaris untuk Solaris 8 atau 10 (yang lain belum diuji)

freebsd untuk FreeBSD 5 hingga 8.0 (yang lain belum diuji)

openbsd untuk OpenBSD 3.1 hingga 4.6 (yang lain belum diuji)

cygwin untuk Cygwin

generik untuk OS lainnya.

kustom untuk menyesuaikan setiap pengaturan secara manual

3: Konfigurasi server Haproxy

(1) Buat file konfigurasi haproxy

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp contoh/haproxy.cfg /etc/haproxy/

(2) Buat skrip layanan

[root@localhost haproxy-1.5.19]# cp contoh/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/lokal/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --tambahkan haproxy

(3) Pengenalan konfigurasi Haproxy

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 lokal0

pemberitahuan log 127.0.0.1 local1

#log loghost lokal0 info

makskon 4096

cairan 99

panduan 99

setan

#debug

#diam

bawaan

log global

modus http

pilihan httplog

opsi dontlognull

coba lagi 3

#kirim ulang

maxconn2000 bahasa Indonesia

batas waktu 5000

klitimeout 50000

batas waktu srv 50000

dengarkan webcluster 0.0.0.0:80

opsi httpchk GET /index.html

keseimbangan roundrobin

server inst1 192.168.1.61:80 periksa inter 2000 fall 3

server inst2 192.168.1.62:80 periksa inter 2000 fall 3

Anda dapat menambahkan bobot setelah setiap server untuk mengatur nilai bobot.

server inst1 192.168.1.61:80 periksa inter 2000 fall 3berat 1

server inst2 192.168.1.62:80 periksa inter 2000 fall 3berat 2

Penjelasan setiap pernyataan

global

log127.0.0.1 lokal0\konfigurasikan pencatatan,lokal0Apakah perangkat log, defaultnya adalah log sistem

log 127.0.0.1 local1 pemberitahuan \Tingkat lognya adalahmelihat

#log loghost lokal0 info

koneksi maks 4096 \Jumlah koneksi maksimum

cairan 99 \penggunacairan

panduan 99 \penggunapetunjuk

setan \Jalankan sebagai proses daemon

#debug \Mode debug, menampilkan informasi startup ke output standar

#diam \Mode senyap, tidak ada keluaran saat startup

bawaan

mencatat global \menggunakanbola duniamasuk ditentukan

modus http \Modusnya adalahhttp

opsi httplog \menggunakanhttpFormat pencatatan

opsi dontlognull \memastikanProksi HAJangan mencatat paket detak jantung yang dikirim oleh penyeimbang beban tingkat atas untuk mendeteksi data status.

coba lagi 3 \Periksa jumlah kegagalan koneksi node yang melebihi3Node dianggap tidak tersedia

  #kirim ulang\saat memuatKetika nilainya sangat tinggi, koneksi yang telah lama diproses dalam antrian saat ini akan dihentikan secara otomatis.

maxconn 2000 \Jumlah koneksi maksimum

batas waktu 5000 \Waktu koneksi habisMS

klitimeout 50000Batas waktu klienMS

batas waktu srv 50000Batas waktu server habisMS

dengarkan webcluster 0.0.0.0:80 \Tentukan nomor cluster dan port pendengaran

opsi httpchk GET /index.html \Periksa servernyaindeks.htmldokumen,Pengaturan URL deteksi detak jantung

keseimbangan roundrobin \Algoritma penjadwalan penyeimbangan beban adalah round robin

server inst1 192.168.1.61:80 periksa inter 2000 fall 3 \Tentukan node online

server inst2 192.168.1.62:80 periksa inter 2000 fall 3

periksa inter 2000adalah untuk mendeteksi frekuensi detak jantung (setiap2000 mdTerdeteksi sekali),musim gugur 3Ya3Server dianggap tidak tersedia jika terjadi kegagalan

Pada versi baru, pengaturan batas waktu telah disesuaikan, sebagai berikut:

contimeout digantikan oleh koneksi timeout:Tentukan periode waktu tunggu haproxy untuk meneruskan permintaan klien ke server backend

clitimeout digantikan oleh klien timeout:Periode waktu tunggu untuk ketidakaktifan klien adalah waktu yang diperlukan aplikasi untuk terhubung ke haproxy

srvtimeout digantikan oleh server batas waktu:Setelah klien membuat koneksi dengan server, periode waktu tunggu server adalah waktu yang diperlukan haproxy untuk terhubung ke server web backend.

Catatan:

haproksiAda delapan algoritma penjadwalan

    1. keseimbangan leastconnJumlah koneksi minimum
    2. keseimbangan roundrobinjajak pendapat
    3. sumber keseimbanganMenurut klienAKU PBagaimana cara melakukan hashing
    4. statis-rrMenurut beratnya
    5. air seniberdasarkan permintaanURI
    6. parameter_urlberdasarkan permintaanBahasa Inggrisparameter
    7. hdr(nama)berdasarkanBahasa Indonesia: Bahasa Indonesia: HTTPminta header untuk dikunci setiap saatBahasa Indonesia: Bahasa Indonesia: HTTPbertanya
    8. rdp-cookie(nama)berdasarkankue(nama)untuk mengunci dan hash setiap saatTCPbertanya

akar /usr/berbagi/haproxy \Yaitu untuk mengubah lokasi direktori root yang direferensikan ketika program dijalankan. Jika Anda memiliki kode ini, Anda perlu membuat direktori ini.

Tentang level log

Tingkat DEBUG statis

DEBUG Level menunjukkan bahwa peristiwa informasi terperinci sangat membantu untuk men-debug aplikasi.

statis Tingkat INFO

Tingkat INFO menunjukkan bahwa pesan menyoroti proses aplikasi yang sedang berjalan pada tingkat yang lebih terperinci.

statis Tingkat PERINGATAN

Tingkat PERINGATAN menunjukkan potensi situasi kesalahan.

tingkat kesalahan statis

Tingkat ERROR menunjukkan bahwa meskipun terjadi peristiwa kesalahan, namun tetap tidak mempengaruhi kelangsungan pengoperasian sistem.

statis Tingkat FATAL

Tingkat FATAL menunjukkan bahwa setiap kejadian kesalahan serius akan menyebabkan aplikasi keluar.

Selain itu, ada dua level logging khusus yang tersedia:

statis Level SEMUA

ALL Level adalah level terendah dan digunakan untuk mengaktifkan semua logging.

Tingkat statis MATI

Level OFF merupakan level tertinggi dan digunakan untuk mematikan semua logging.

4: Mulai

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy mulai

5: Uji cluster web

http://192.168.1.60/uji.html

Segarkan halaman untuk menguji

atau uji menggunakan skrip

[root@localhost ~]# untuk i di $(seq 10); lakukan curl http://192.168.1.60/test.html ;selesai

6: Log haproksi

Haproxy tidak mencatat log secara default. Selain menentukan output log di bagian global di haproxy.conf, Anda juga perlu mengkonfigurasi file konfigurasi log sistem.

metode satu:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

global

# log 127.0.0.1 lokal0

# pemberitahuan log 127.0.0.1 local1

#log loghost lokal0 info

makskon 4096

chroot /usr/berbagi/haproxy

cairan 99

panduan 99

setan

#debug

#diam

log /dev/log lokal0 info

pemberitahuan log /dev/log local0

[root@localhost haproxy-1.4.24]# sentuh /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

jika ($programname == 'haproxy' dan $syslogseverity-text == 'info') maka -/var/log/haproxy/haproxy-info.log

& ~

jika ($programname == 'haproxy' dan $syslogseverity-text == 'notice') maka -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# layanan rsyslog restart

[root@localhost ~]#/etc/init.d/haproxy mulai ulang

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Metode Kedua:

(1) Sunting /etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 lokal3

#local3 adalah perangkat, sesuai dengan konfigurasi di /etc/rsyslog.conf, dan informasi tingkat log didaur ulang secara default.

(2) Tulis file log haproxy

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerJalankan 514

lokal3.* /var/log/haproxy.log

&~

Catatan:

$ModLoad imudpProtokol UDP untuk mengumpulkan log

$UDPServerJalankan 514Tentukan nomor port yang digunakan untuk pengumpulan log

lokal3.* /var/log/haproxy.logTentukan lokasi penyimpanan log

(3) Konfigurasikan file konfigurasi utama rsyslog dan aktifkan logging jarak jauh (opsional)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

PILIHAN_SYSLOGD=”-c 2 -r -m 0″

#-c 2 Gunakan mode kompatibilitas, defaultnya adalah -c 5

#-r Aktifkan pencatatan jarak jauh

#-m 0 tandai stempel waktu.Satuannya adalah menit. Jika nilainya 0, artinya fungsi tersebut dinonaktifkan.

(4) Mulai ulang layanan haproxy dan rsyslog

[root@localhost ~]# systemctl memulai ulang rsyslog

[root@localhost ~]# sistemctl memulai ulang haproxy

(5) Periksa log setelah mengunjungi situs web

[root@localhost ~]# kucing /var/log/haproxy.log

Ekstensi: proksi mysql

mendengarkan mysql 0.0.0.0:3306

server mysql1 192.168.10.205:3306 periksa port 3306 maxconn 300