Tập lệnh kiểm tra haproxy mysql

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn các bạn cách tạo và mở rộng trang web chạy wordpress, có khá nhiều công cụ giúp cân bằng tải [loadbalancer] như HAProxy, Nginx, LVM,… nhưng trong hướng dẫn này tôi sẽ hướng dẫn

mô hình

Khi chưa có load balancer thì có dạng như thế này

sau khi thực thi cân bằng tải cho wordpress thì nó sẽ có dạng như sau

Haproxy is what

HAProxy là từ viết tắt của High Availability Proxy, nó là phần mềm cân bằng tải TCP/HTTP tức là nó hỗ trợ ở tầng 4 và tầng 7, nếu bạn nào muốn tìm hiểu về Thuật ngữ mạng thì xem tại đây. Nó thường được sử dụng để cải thiện hiệu suất và sự tin cậy trong môi trường máy chủ bằng cách phần tán lưu lượng trên nhiều máy chủ như web, ứng dụng, cơ sở dữ liệu

Hiện tại có khá nhiều công ty lớn trên thế giới sử dụng nó như Github, Imgur, Instagram, Airbnb, Twitter, Reddit, các bạn có thể xem thêm tại đây trong bài viết này chúng tôi chỉ hướng dẫn các bạn cách cấu hình cho

Trước khi bắt đầu chúng ta cần có các thành phần sau đây

  • One con VPS run MySQL
  • Hai con VPS chạy Nginx và PHP-FPM
  • One con VPS làm Loadbalance

Toàn bộ hướng dẫn này tôi sẽ thao tác trên hệ điều hành Centos7 và được thực thi thông qua tập lệnh có thể sử dụng được, tất nhiên bạn cũng có thể áp dụng cho bất kỳ phiên bản hệ điều hành Gnu/Linux nào sở thích của bạn. Nếu bạn không có điều kiện sở hữu VPS thì có thể tạo thông tin cho nó thông qua máy ảo. Toàn bộ mã nguồn hướng dẫn của bản demo này bạn có thể tải nó lên github chú ý rằng bên duới đây có thể chúng tôi sẽ không huênh dẫn chi tiết cài đặt từng cái mà chỉ hướng nói đi cụ thể để các bạn hiểu

Cài đặt MySQL/MariaDB

Tùy chỉnh hệ thống điều hành và nhà cung cấp VPS mà bạn chọn cách cài đặt, để cho nhanh gọn, tôi sẽ chọn MySQL trên AWS bạn có thể tham khảo giá thêm tại Amazon RDS for MySQL còn nếu bạn muốn cài đặt từ đầu thì có thể . Tôi giả sử bạn đã cài đặt thành công thì bước tiếp theo chúng ta cần tạo một cơ sở dữ liệu [cơ sở dữ liệu] với tên gọi là demo_loadbanlancer_wp_gsviec, vì wordpress cần điều đó

## Connect to shell MariaDB

create database demo_loadbanlancer_wp_gsviec

Tất nhiên chúng tôi cung cấp tập lệnh làm tự động mọi thứ cho bạn, nếu muốn bạn có thể tham khảo tại đây

Cài đặt Nginx và PHP-FPM

Trong bản demo này, chúng tôi sẽ cài đặt trên 2 con VPS với địa chỉ IP là 52. 91. 57. 224, 54. 198. 47. 182. Bỏ qua vì WordPress viết bằng ngôn ngữ PHP nên chúng tôi phải cài đặt PHP, nhưng vì chúng tôi sử dụng Nginx làm máy chủ web nên cài đặt PHP-FPM để cho nó có tốc độ tối ưu nhất

Truớc tiên chúng ta cần cập nhật các bản cập nhật mới nhất cũng như cài đặt các thành phần bổ trợ cho hệ điều hành Centos7

yuminstall epel-release -y

yuminstall gcc libxml2-devel libXpm-devel gmp-devel libicu-devel

t1lib-devel aspell-devel openssl-develcreate database demo_loadbanlancer_wp_gsviec0create database demo_loadbanlancer_wp_gsviec1

create database demo_loadbanlancer_wp_gsviec2

create database demo_loadbanlancer_wp_gsviec3

create database demo_loadbanlancer_wp_gsviec4

create database demo_loadbanlancer_wp_gsviec5gcc create database demo_loadbanlancer_wp_gsviec7 create database demo_loadbanlancer_wp_gsviec8

Cài đặt Nginx

To install em it, you just going to run a command line under here

create database demo_loadbanlancer_wp_gsviec9

yum0

PHP và PHP-FPM

Cài đặt thêm gói epel và kho lưu trữ webtatic

yum1

yum2

Sau khi chạy lệnh bên trên xong, bạn chỉ cần chạy lên bên dưới để cài đặt PHP và PHP-FPM

yuminstall yum5

yum6

yum7

yum8

yum9

install0

yuminstall install3

sau khi cài đặt xong cho con web1 thì bạn thực hiện các thao tác tương tự cho con web2, nếu như bạn sử dụng các dịch vụ của Linode, DO, AWS thì nó sẽ có tính năng sao chép hoặc chụp bạn chỉ cần nhấp vào thế là có ngay . Trong trường hợp của chúng tôi sau khi cài đặt thành công có thể xác nhận thông tin qua lệnh sau

install4

install5

Đồng bộ hóa thư mục web

Như bạn biết khi bạn sử dụng 2 máy chủ web tức là những tệp của ứng dụng bạn sẽ phải ở hai nơi, làm thế nào để đồng bộ của nó có nhiều cách như sử dụng scp, đồng bộ hóa nhưng cách này không tối ưu lắm

Chú ý rằng tập tin ở đây tùy trường hợp cụ thể, ví dụ trang web của bạn là blog hay chia sẽ hình ảnh gì đó, thì lúc này người dùng tải hình ảnh lên có thể nó ở trên con wordpress-1 hoặc wordpress-2

Việc sử dụng NFS để xử lý phân bố hình ảnh nó rất chậm, đặt biệt là khi sử dụng kết hợp CDN, bạn có thể tham khảo bài viết Mò kim đáy bể của các kỹ sư Facebook viết tại sao họ từ bỏ NFS chuyển sang công nghệ của họ

Vì vậy chúng ta thì sao khi, câu trả lời của cá nhân tôi là bạn nên sử dụng Amazon S3 để xử lý tệp lưu trữ là tốt nhất với giá cả phải chăng và gần như 99,999999% không gặp sự cố chết

Một câu hỏi nữa. ]. Nếu ta sử dụng S3 thế thì mã nguồn của ta xử lý thế nào khi ta thêm một tập tin vào?

Câu trả lời của tôi là như sau. Khi bạn phát triển khai thác mã nguồn lên web server thông thường theo cách truy cập hệ thống bạn sử dụng FTP, SCP, Git pull, nhưng khi chúng ta cấu hình cho hàng ngàn hay hàng trăm con web server thì dùng cách đó rất là lạ, bạn nhé . Có khá nhiều dịch vụ công vụ cấp cho ta làm chuyện đó như Amazon cam kết nhưng cá nhân tôi thích công cụ mã nguồn mở hơn là không hạn chế như Capitrano, Deployer và công cụ yêu thích của tôi là ansible

Cài đặt wordpress

Việc cài đặt wordpress khá đơn giản, bạn chỉ việc tải source WordPress về và sau đó upload lên 2 con server ở trên là xong, nếu bạn nào chưa hiểu cách cài đặt wordpress trên Linux là gì thì có thể xem khóa

Cài đặt HAProxy

Việc cài đặt HAProxy có 2 cách, bạn có thể cài đặt thảnh thơi từ mã nguồn của nó hoặc cái đặt thông qua repo của Centos trong bản demo này, chúng tôi cài đặt thông qua repo bằng lệnh sau

create database demo_loadbanlancer_wp_gsviec9

install7

Mặt định cấu hình thư mục của haproxy nó sẽ nằm trong /ect/haproxy và cái tập tin chúng ta thao tác nhiều nhất là /etc/haproxy/haproxy. cfg, để cấu hình haproxy thì chúng ta cần sữa tập tin đó, nhưng trước hết chúng ta cần sao lưu tập tin này trước khi đổi chúng, có gì sau khi chúng ta còn rollback ?

install8

sau đó bạn sửa tập tin sữa có dạng như bên duới

install9

epel-release -y0

epel-release -y1

epel-release -y2epel-release -y3

_______42____45____46

epel-release -y2epel-release -y8____49yum0

epel-release -y2yum2

epel-release -y2yum4

epel-release -y2yum6

epel-release -y2yum8

epel-release -y2install0

epel-release -y2____32install3

install4

epel-release -y2install6

epel-release -y2install8

epel-release -y2gcc0

epel-release -y2gcc2

epel-release -y2gcc4

_______42____76____77

epel-release -y2gcc9

epel-release -y2libxml2-devel libXpm-devel gmp-devel libicu-devel1

epel-release -y2libxml2-devel libXpm-devel gmp-devel libicu-devel3

epel-release -y2libxml2-devel libXpm-devel gmp-devel libicu-devel5

epel-release -y2libxml2-devel libXpm-devel gmp-devel libicu-devel7

epel-release -y2libxml2-devel libXpm-devel gmp-devel libicu-devel9

epel-release -y2t1lib-devel aspell-devel openssl-devel1

epel-release -y2t1lib-devel aspell-devel openssl-devel3

_______42____95

epel-release -y2t1lib-devel aspell-devel openssl-devel7

t1lib-devel aspell-devel openssl-devel8

epel-release -y2create database demo_loadbanlancer_wp_gsviec00

epel-release -y2create database demo_loadbanlancer_wp_gsviec02

epel-release -y0

create database demo_loadbanlancer_wp_gsviec04

epel-release -y0

create database demo_loadbanlancer_wp_gsviec06

epel-release -y2create database demo_loadbanlancer_wp_gsviec08

_______42____110

epel-release -y2create database demo_loadbanlancer_wp_gsviec12

create database demo_loadbanlancer_wp_gsviec13

_______42____115____116

epel-release -y2create database demo_loadbanlancer_wp_gsviec18

_______42____120

epel-release -y2create database demo_loadbanlancer_wp_gsviec22

trong đó bạn cần chú ý các phần sau, truớc tiên là phương thức cân bằng mặc định của nó là roundrobin nó là phương thức đơn giản nhất với phương thức này thì mỗi một yêu cầu gửi từ khách hàng thì sẽ chọn các máy chủ một lần, ví dụ . Với những điều này, nó không tối ưu cho lắm vì điều đó tôi khuyến nghị các bạn nên chọn phương thức là leastconn

Vì vậy, leastconn là gì? . Tất nhiên chúng ta có nhiều phương thức khác nhau như nguồn, Kiểm tra sức khỏe, phiên Stick

Còn lại phần cấu hình

create database demo_loadbanlancer_wp_gsviec13

_______42____125

epel-release -y2create database demo_loadbanlancer_wp_gsviec18

_______42____120

epel-release -y2create database demo_loadbanlancer_wp_gsviec22

cái này chỉ là tạo giao diện web GUI của HAProxy để quản lý các máy chủ web mà chúng ta cấu hình, mặc định nó không có chứng thực mật khẩu nếu bạn muốn thì bạn xóa dấu # truớc dòng #stats auth phanbook. phanbook, giao diện của nó như sau nếu bạn truy cập qua đường dẫn. http. //34. 207. 217. 19. 8080/

Như hình trên thì hiện tại phần backend có 2 web server lần luợt là app1 và app2, nó đang hoạt động bình thường nên nó có màu xanh, nếu nó bị chết[die] thì sẽ hiện ra màu đỏ. ] Bạn thử dừng ứng dụng web lừa đảo1 sau đó làm mới trình duyệt để xem có gì thay đổi không

Sử dụng Ansiable để triển khai

Ansible là cái gì và nó làm việc như thế nào?

Chúng tôi sẽ sử dụng bạn đã cài đặt thành công trên máy của bạn, nếu chưa có thì có thể cài đặt thông qua câu lệnh sau

create database demo_loadbanlancer_wp_gsviec32

create database demo_loadbanlancer_wp_gsviec33

bởi vì chúng tôi sử dụng ansitrano để triển khai mã nguồn wordpress, do đó bạn cần phải cài đặt vào nếu muốn thực hiện bản demo bên dưới

create database demo_loadbanlancer_wp_gsviec34

công việc tiếp theo là bạn sao chép mã nguồn của chúng tôi tại https. //github. com/gsviec/haproxy-wordpress

create database demo_loadbanlancer_wp_gsviec35

create database demo_loadbanlancer_wp_gsviec36

sau đó mở tệp ansiable/hosts rồi chỉnh lại các thông số IP cho đúng với các IP VPS của bạn, trong trường hợp của chúng tôi có dạng như sau

create database demo_loadbanlancer_wp_gsviec37

create database demo_loadbanlancer_wp_gsviec38

create database demo_loadbanlancer_wp_gsviec39

create database demo_loadbanlancer_wp_gsviec40

create database demo_loadbanlancer_wp_gsviec41

create database demo_loadbanlancer_wp_gsviec42

create database demo_loadbanlancer_wp_gsviec43

create database demo_loadbanlancer_wp_gsviec44

create database demo_loadbanlancer_wp_gsviec45

create database demo_loadbanlancer_wp_gsviec46

create database demo_loadbanlancer_wp_gsviec47

Mặt định chúng tôi sẽ tạo cơ sở dữ liệu với tên là demo_loadbanlancer_wp_gsviec, nếu bạn muốn thay đổi nó thì có thể vào tất cả các tệp tại đây

Mọi thứ gần nhất như đã hoàn thành công việc cuối cùng còn lại của bạn thì chỉ cần chạy lệnh sau

create database demo_loadbanlancer_wp_gsviec48

create database demo_loadbanlancer_wp_gsviec49

create database demo_loadbanlancer_wp_gsviec50

sau đó bạn chỉ cần đợi cho nó cài đặt, cuối cùng bạn truy cập thông tin qua địa chỉ IP[ha1] ở phần khai báo trong tệp máy chủ của tệp ansible, trong bản demo này của chúng tôi là http. //34. 207. 217. 19/ thì bạn sẽ thấy kết quả như hình dưới đây

Xin chúc mừng bạn đã thiết lập thành cồng cân bằng tải cho trang web wordpress của bạn

Bài kiểm tra

Để kiểm tra nó có hoạt động hiểu quả hay không chúng ta cần phải sử dụng công cụ để kiểm tra nó, khá nhiều công cụ như apache, bao vây, beeswithmachineguns nhưng trong bản demo này, chúng tôi sẽ sử dụng dịch vụ bên thứ 3 đó là loader. io, sau khi xác minh và chạy thử nghiệm cho 10k yêu cầu trong vòng 15 giây thì trang web 100% đáp ứng tốt cho bạn có thể xem hình bên dưới liên kết hoăc này ha-10000

Kết luận

Mô hình cần tải trong hướng dẫn này vẫn chưa đáp ứng được cơ chế chuyển đổi dự phòng tức là nếu con load balancer[ha1] hoặc con db1 nó chết thì người dùng không thể truy cập được, để khắc phục nhược điểm đó thì ta cần phải

Chủ Đề