1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồng bộ dữ liệu Webserver - Rsync & Mariadb Replication

24 46 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 2,62 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở một nơi khác, đề phòng có sự cố.- Server chứa dữ liệu gốc được gọi là Master, server chứa dữ liệu nhân bản được

Trang 2

MỤC LỤC

Trang 3

CHƯƠNG I GIỚI THIỆU

1.1 TÍNH NĂNG VÀ Ý NGHĨA CỦA DỊCH VỤ

1.1.1 Giới thiệu về tính năng Rsync

- Rsync (Remote Sync) là một công cụ dùng để sao chép và đồng bộ file/thư

mục được dùng rất phổ biến Với sự trợ giúp của rsync, bạn có thể đồng bộ dữ liệutrên local hoặc giữa các server với nhau một cách dễ dàng

- Tính năng nổi bật của Rsync

• Rsync hỗ trợ copy giữ nguyên thông số của files/folder như Symbolic links,Permissions, TimeStamp, Owner và Group

• Rsync nhanh hơn scp vì Rsync sử dụng giao thức remote-update, chỉ

transfer những dữ liệu thay đổi mà thôi

• Rsync tiết kiệm băng thông do sử dụng phương pháp nén và giải nén khi transfer

• Rsync không yêu cầu quyền super-user

- Cú pháp chung của rsync:

#rsync option source destination

- Trong đó:

Source: thư mục chứa dữ liệu gốc muốn đồng bộ, nơi truyền dữ liệu.

destination: nơi sẽ chứa dữ liệu đồng bộ đến, nơi nhận dữ liệu.

option: các tham số để tùy biến rsync khi đồng bộ dữ liệu.

- Các tham số để tùy biến

-a: option này sẽ bảo toàn user, group, permission,symbolic link của dữ liệu

-v: show trạng thái truyền tải file ra màn hình để bạn theo dõi.

-h: kết hợp với -v để định dạng dữ liệu show ra dễ nhìn hơn.

-z: nén dữ liệu trước khi truyền đi giúp tăng tốc quá trình đồng bộ file.

-e: sử dụng giao thức SSH để mã hóa dữ liệu.

-P: Option này dùng khi đường truyền không ổn định, nó sẽ gửi tiếp các file chưa

được gửi đi khi có kết nối trở lại

delete: xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó.

exclude: loại trừ ra những dữ liệu không muốn truyền đi, nếu bạn cần loại ra

nhiều file hoặc folder ở nhiều đường dẫn khác nhau thì mỗi cái bạn phải thêm –exclude tương ứng

- Rsync không tự động chạy nên thường được dùng kết hợp với crontab.

1.1.2 Giới thiệu về MariaDB Replication Master-Slave

- Với các cơ sở dữ liệu có nhu cầu lưu trữ lớn thì đòi hỏi về tính toàn vẹn, không bị mất mát dữ liệu trước những sự cố ngoài dự đoán là rất cao Vì vậy, người ta nghĩ

ra khái niệm replication – nhân bản Đây là một tính năng cho phép bạn tạo một

Trang 4

phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở một nơi khác, đề phòng có sự cố.

- Server chứa dữ liệu gốc được gọi là Master, server chứa dữ liệu nhân bản được gọi

là Slave Quá trình nhân bản từ master sang slave gọi là replication

- Bạn có thể kiểm soát dữ liệu cần sao chép Tất cả các cơ sở dữ liệu, một hoặc nhiều cơ sở dữ liệu hoặc các bảng trong cơ sở dữ liệu đều có thể được sao chép có chọn lọc

- Ưu điểm của việc sử dụng Replication:

• Khả năng mở rộng – Scalability: Bằng cách có một hoặc nhiều server slave,việc đọc có thể được trải rộng trên nhiều server, giảm tải cho master Kịch bản phổ biến nhất cho môi trường đọc cao, viết thấp là có một master, trong

đó tất cả các ghi xảy ra, sao chép thành nhiều slave, xử lý hầu hết các lần đọc

• Phân tích dữ liệu – Data analysis: phân tích dữ liệu có thể ảnh hưởng nhiều đến master server do đó ta có thể sử dụng slave server để phân tích dữ liệu

mà vẫn đảm bảo master server hoạt động bình thường

• Hỗ trợ sao lưu – Backup assistance:

• Phân phối dữ liệu – Distribution of data: Thay vì được kết nối với một master server từ xa, ta ó thể sao chép dữ liệu cục bộ và làm việc từ dữ liệu này

- Mô hình MySQL Replication và cách thức hoạt động

Trang 5

2.1 CẤU HÌNH WEB SERVER

2.2.1 Thiết lập cơ bản

Server Haproxy

Trang 6

Web Server 1 và Web Server 2

- Thiết lập hostname trên Server và cập nhật hệ thống:

• Tại Web Server 1:

hostnamectl set-hostname web1

yum update -y

• Trại Web Server 2:

hostnamectl set-hostname web2 yum update -y

- Tắt SELinux cả 2 Server:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

- Tại Web Server 1 & 2: Cập nhật host file trên Haproxy Server thêm IP và

hostname của 3 Server:

vi /etc/hosts

- Khởi động lại hệ thống:

init 6

2.2.2 Cài đặt Webserver

Web Server 1 và Web Server 2

- Cài đặt các gói cần thiết cho dịch vụ Web

yum install httpd -y

yum install php -y

yum install mariadb-server mariadb -y

- Cập nhật thư viện cho centos

yum install epel-release -y

- Cài đặt phpmyadmin

Trang 7

yum install phpmyadmin -y

2.2.3 Cấu hình Webserver

- Khởi động mysql

systemctl start mariadb

- Đặt password để đăng nhập vào mysql

mysql_secure_installation

• Ở bước này sẽ thiết lập một số cấu hình như sau Bước này yêu cầu nhập mật khẩu gần đây cho root Nếu mới cài lần đầu thì nhấn Enter để bỏ qua

Enter currret password for root (enter for none):

• Nếu cài lần đầu, hệ thống sẽ hỏi muốn cài password cho quyền root không

Gõ Y -> Enter, sau đó nhập mật khẩu và xác thực mật khẩu.

Set root password? (Y/n)

• Hệ thống yêu cầu thêm một số thiết lập như sau:

 Xoá bỏ các user khác

 Không cho phép root đăng nhập từ xa

 Xoá bỏ databases test

 Khởi chạy lại bảng Privilege (bảng phân quyền)

Trang 8

Chỉ cần gõ Y cho những yêu cầu đó Sau khi thiết lập xong, kích hoạt

mariadb để khởi động cùng hệ thống:

systemctl enable mariadb

- Lưu ý: Cả hai Server phải đặt mật khẩu giống nhau để làm Mariadb Replication

- Cấu hình phpMyAdmin

vi /etc/httpd/conf.d/phpMyAdmin.conf

• Thêm dấu # vào dòng 17 và 18

Thêm nội dung sau vào ngay bên dưới dòng Require ip ::1 là Require all

granted

- Cấu hình Firewall:

firewall-cmd permanent zone=public add-service=http

firewall-cmd permanent zone=public add-service=https

firewall-cmd reload

- Khởi động dịch vụ Web

Trang 9

systemctl start httpd

2.2 CẤU HÌNH HAPROXY

2.1.1 Đăng ký Domain – Cấu hình DNS

- Vì làm trên public nên không cần cài đặt DNS tại VPS mà lên trang freenom.com

đăng ký domain miễn phí và cấu hình DNS tại đó

- Sau khi lấy được domain miễn phí, vào Services -> My Domain để xem domain mới đăng ký.

Trang 10

- Để cấu hình DNS vào Manage Domain của Domain mới đăng ký để cấu hình

- Bấm vào Manage Freenom DNS để cấu hình Thêm A với CNAME của server

Loadbalancer

2.1.2 Cấu hình Haproxy

Server Haproxy

- Cài đặt dịch vụ load balancing:

yum install haproxy -y

- sau khi cài gói haproxy vào đường dẫn /etc/haproxy xóa thư mục haproxy.cfg mặc định đi

rm /etc/haproxy/haproxy.cfg

Trang 11

- tạo lại một file haproxy.cfg khác trong đường dẫn /etc/haproxy/ và cấu hình file haproxy.cfg đó :

server web1 103.109.43.156:80 check (#địa chỉ web 1)

server web2 103.109.43.196:80 check (#địa chỉ web 2)

- Cấu hình Firewall:

firewall-cmd permanent zone=public add-port=8080/tcp

firewall-cmd reload

- Lưu lại file và start dịch vụ haproxy

systemctl start haproxy

systemctl enable haproxy

- Cấu hình proxy để truy cập đến web1 và web2 thông qua port 8001, 8002

• Cấu hình trỏ port : Vào file haproxy.cfg cấu hình thêm các dòng lệnh

Trang 12

• Khởi động lại dịch vụ Haproxy :

systemctl restart haproxy

2.2CẤU HÌNH MARIADB REPLICATION

2.2.1 Cấu hình trên Web1 (Master)

- Cấu hình firewall, cho phép lắng nghe port 3306

firewall-cmd add-port=3306/tcp zone=public permanent

server_id là tùy chọn được sử dụng trong replication cho phép master

server và slave server có thể nhận dạng lẫn nhau Server_id Với mỗi server

là khác nhau, nhận giá trị từ 1 đến 4294967295(mariadb >=10.2.2) và 0 đến4294967295(mariadb =<10.2.1)

log-bin hay log-basename là tên cơ sở nhật ký nhị phân để tạo tên tệp nhật

ký nhị phân binlog-format là định dạng dữ liệu được lưu trong file bin log

binlog-do-db là tùy chọn để nhận biết cơ sở dữ liệu nào sẽ được

replication Nếu muốn replication nhiều CSDL, bạn phải viết lại tùy chọn binlog-do-db nhiều lần Hiện tại không có option cho phép chọn toàn bộ CSDL để replica mà bạn phải ghi tất cả CSDL muốn replica ra theo option này

Trang 13

- Restart lại dịch vụ mariadb để nhận cấu hình mới.

systemctl restart mariadb

- Sử dụng root user đăng nhập vào MariaDB

mysql -u root -p

- Tạo CSDL có tên là store

create database store;

- Tạo Slave user, password và gán quyền cho user đó Ví dụ sử dụng username là slave_user và password là tdc@123

create user 'slave_user'@'%' identified by 'tdc@123';

stop slave;

Grant replication slave on *.* to 'slave_user'@'%' identified by 'tdc@123';

- Xác nhận lại các thay đổi với câu lệnh:

FLUSH PRIVILEGES;

- Sử dụng câu lệnh dưới đây để chắc chắn rằng không có bất cứ điều gì được ghi vào master database trong quá trình replication dữ liệu

Trang 14

FLUSH TABLES WITH READ LOCK;

- Tiến hành backup CSDL trên master server và chuyển nó đến slave server

mysqldump all-databases user=root password master-data >

- Sử dụng câu lệnh dưới để kiểm tra trạng thái của master Ghi nhớ filename and

position của binary log để có thể thực hiện cấu hình trên slave.

mysql -u root -p

show master status;

Trang 15

2.2.2 Cấu hình trên Web2 (Slave)

- Cấu hình firewall, cho phép lắng nghe port 3306

firewall-cmd add-port=3306/tcp zone=public permanent

- Import CSDL master Enter password của root user trong Mariadb

mysql -u root -p < /home/masterdatabase.sql

- Restart MariaDB service để tiếp nhận thay đổi

systemctl restart mariadb

- Sử dụng root user đăng nhập vào MariaDB Server

- Kiểm tra trạng thái của Slave, sử dụng lệnh:

show slave status\G;

Trang 16

- Resart lại mariadb:

systemctl restart mariadb

2.2.3 Kiểm tra

- Vào phpMyAdmin của Server Web1 (Master)

- import up database của source web

Trang 17

- Vào trang phpMyAdmin của Web2 (Slave) kiểm tra thấy có database được đồng

bộ từ Server Web1 (Mater)

2.3 CẤU HÌNH RSYNC

- Cài đặt rsync: Thực hiện trên cả server chính lẫn server phụ

yum install rsync -y

2.3.1 Thiết lập cơ bản

- Vào Winscp và đăng nhập tài khoản root Server Web1

Trang 18

- Di chuyển database từ máy sang thư mục /var/www/hmtl

- Vào trang chủ Web1 tại trình duyệt web để kiểm tra trước khi đồng bộ web server

Trang 19

2.3.2 Đồng bộ dữ liệu Web Server

- Tạo tài khoản thực hiện rsync: Thực hiện trên server chính bằng quyền root Ví dụ

ở đây mình tạo tài khoản tên là tdc Lệnh sẽ tạo tài khoản syntest với thư mục gốc

là /home/tdc và login ở chế độ /bin/bash

useradd -d /home/tdc -m -s /bin/bash tdc

passwd tdc

- Thử rsync: Thực hiện trên server phụ bằng quyền root

rsync -avzhe ssh tdc@103.109.43.156:/var/www/ /var/www/

- Lệnh trên yêu cầu bạn nhập mật khẩu của tài khoản tdc Sau khi thực hiện thành công, bạn vào thư mục /var/www/html/ thuộc server phụ thì sẽ thấy các file đã được copy sang

Trang 20

- Tạo key xác thực để không cần nhập mật khẩu khi thực hiện rsync: Thực hiện trên server phụ bằng quyền root

mkdir /root/rsync

ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Khi bạn nhập lệnh này, vui lòng không cung cấp cụm mật khẩu và nhấp vào enter cho Cụm mật khẩu trống để rsync cron sẽ không cần bất kỳ mật khẩu nào để đồng

bộ hóa dữ liệu

Trang 21

- Tiếp theo ta chép public key sang server chính: thực hiện trên server phụ

scp /root/rsync/mirror-rsync-key.pub tdc@103.109.43.156:/home/tdc/

server chính bằng quyền root

cat mirror-rsync-key.pub >> authorized_keys

rsync -avz delete -e "ssh -i /root/rsync/mirror-rsync-key"

tdc@103.109.43.156:/var/www/ /var/www/

Trang 22

- Lên lịch Cron để tự động hóa đồng bộ hóa: thực hiện trên server phụ

crontab -e

- Nó sẽ mở tệp / etc / crontab để chỉnh sửa bằng trình chỉnh sửa mặc định của

bạn Ở đây Trong ví dụ này, tôi đang viết một cron để chạy nó sau mỗi 5 phút để đồng bộ hóa dữ liệu

*/5 * * * * /usr/bin/rsync -avz delete -e "ssh -i /root/rsync/mirror-rsync-key" tdc@192.168.1.50:/var/www/ /var/www/

• Lệnh cron và rsync ở trên chỉ cần đồng bộ hóa “ / var / www / ” từ máy chủweb chính với máy chủ dự phòng sau mỗi 5 phút Bạn có thể thay đổi thời gian và cấu hình vị trí thư mục theo nhu cầu của mình

2.3.3 Kiểm tra

- Vào trình duyệt web kiểm tra Web 2 (Slave) Kiểm tra web đã được đồng bộ

- Vào trang Admin của trang web 1 (Master)

Trang 23

- Chọn sản phẩm bất kì để sửa đổi ví dụ nhóm mình chọn CPU Intel Core I3-8100 (3.6GHz) và sửa thông tin giá sản phẩm Giá gốc trong thông tin sản phẩm là

3150000 sẽ tăng giá lên 5150000 Sau đó nhấn lưu

- Vào trang web 2 (Slave) chọn sản phẩm mình đã sửa đổi kiểm tra thấy sản phẩm

đã được đồng bộ

Trang 24

TÀI LIỆU KHAM THẢO

https://www.journaldev.com/29314/set-up-mariadb-master-slave-replication-centos

Ngày đăng: 13/01/2021, 19:09

TỪ KHÓA LIÊN QUAN

w