Ò»¡¢ÎªÊ²Ã´ÐèÒª“¸ß¿ÉÓÃÐÔ”£¿
Íæ¼ÒÁ÷ʧÂʸߣ¿·þÎñÆ÷Ƶ·±±ÀÀ££¿±¾ÎĽ«½ÌÄã´òÔìÒ»¸ö24Сʱ²»å´»ú¡¢¿¹¹¥»÷¡¢Ò×À©Õ¹µÄÆæ¼£MU£¬ÊʺÏÒÑÕÆÎÕ»ù´¡¼ÜÉèµÄÍæ¼Ò½ø½×ѧϰ¡£
¶þ¡¢¸ß¿ÉÓÃÐÔ·þÎñÆ÷µÄºËÐÄÒªËØ
Ó²¼þÈßÓà
Ë«»úÈȱ¸£º×¼±¸Á½Ì¨·þÎñÆ÷£¬Ö÷·þÎñÆ÷¹ÊÕÏʱ×Ô¶¯Çл»±¸Óûú£¨ÐèʹÓÃKeepalived»òÔÆ·þÎñ¸ºÔؾùºâ£©¡£
·Ö²¼Ê½´æ´¢£º½«Êý¾Ý¿âºÍÓÎÏ·Êý¾Ýͬ²½µ½¶ą̀·þÎñÆ÷£¨ÍƼöʹÓÃrsync»òÔÆ´æ´¢£©¡£
ÍøÂçÓÅ»¯
BGP¶àÏß½ÓÈ룺ʹÓöàÔËÓªÉÌÏß·£¨µçÐÅ+ÍøÍ¨+ÒÆ¶¯£©£¬¼õÉÙÍæ¼ÒÑÓ³Ù¡£
CDN¼ÓËÙ£º¾²Ì¬×ÊÔ´£¨ÈçµØÍ¼Îļþ¡¢¿Í»§¶Ë£©Í¨¹ýCDN·Ö·¢£¬½µµÍ·þÎñÆ÷´ø¿íѹÁ¦¡£
°²È«·À»¤
DDoS·ÀÓù£º²¿ÊðCloudflare»ò°¢ÀïÔÆ¸ß·ÀIP£¬¹ýÂ˶ñÒâÁ÷Á¿¡£
Êý¾Ý¿â¼ÓÃÜ£º¶ÔMySQLÓû§ÃÜÂë½øÐÐSHA-256¼ÓÃÜ£¬·ÀÖ¹ÍϿ⹥»÷¡£
Èý¡¢ÊµÕ½£º´î½¨Ë«»úÈȱ¸·þÎñ¶Ë
²½Öè1£ºÅäÖÃÖ÷´Ó·þÎñÆ÷
Ö÷·þÎñÆ÷£¨IP: 192.168.1.100£©
°²×°MySQL²¢¿ªÆô¶þ½øÖÆÈÕÖ¾£¨ÐÞ¸Ämy.cnf£©£º
server-id=1
log-bin=mysql-bin
µ¼³ö³õʼÊý¾Ý¿â£ºmysqldump -u root -p mirdb > mirdb.sql
´Ó·þÎñÆ÷£¨IP: 192.168.1.101£©
ͬ²½Ö÷·þÎñÆ÷Êý¾Ý£º
mysql -u root -p mirdb < mirdb.sql
ÅäÖôӿâ¼àÌý£º
server-id=2
relay-log=mysql-relay-bin
read-only=1
²½Öè2£º×Ô¶¯¹ÊÕÏÇл»£¨Ê¹ÓÃKeepalived£©
ÔÚÁ½Ì¨·þÎñÆ÷°²×°Keepalived£º
apt-get install keepalived # Debian/Ubuntu
yum install keepalived # CentOS
±à¼ÅäÖÃÎļþ/etc/keepalived/keepalived.conf£º
vrrp_instance VI_1 {
virtual_router_id 51
interface eth0
virtual_ipaddress {
192.168.1.1000/24 # ÐéÄâIP£¨VIP£©
priority 100 # Ö÷·þÎñÆ÷ÓÅÏȼ¶¸ü¸ß
Æô¶¯·þÎñ£ºsystemctl start keepalived
Ч¹û£ºµ±Ö÷·þÎñÆ÷å´»úʱ£¬VIP×Ô¶¯Æ¯ÒƵ½´Ó·þÎñÆ÷£¬Íæ¼ÒÎÞ¸ÐÖªÇл»¡£
ËÄ¡¢·ÀÓù³£¼û¹¥»÷ʵս
µÖÓùCC¹¥»÷£¨Ë¢¹Ö½Å±¾ÀÄÓã©
·½°¸£ºÏÞÖÆÍ¬Ò»IPµÄÇëÇóƵÂÊ
ʹÓÃiptablesÀ¹½Ø¸ßƵÁ¬½Ó£º
iptables -A INPUT -p tcp --dport 7100 -m connlimit --connlimit-above 50 -j DROP
ÔڵǼÆ÷´úÂëÖмÓÈëÑéÖ¤Â루ÈçGoogle reCAPTCHA£©¡£
·ÀÖ¹Êý¾Ý¿â±»±¬ÆÆ
·½°¸£ºÇ¿ÖƸ´ÔÓÃÜÂë + µÇ¼ʧ°ÜËø¶¨
ÐÞ¸ÄMySQLÅäÖÃmy.cnf£º
plugin-load-add = auth_socket.so
password_history = 6 # Ç¿ÖÆÃÜÂë°üº¬´óСд¡¢Êý×Ö¡¢·ûºÅ
ʹÓÃFail2ban×Ô¶¯·â½û¶à´ÎµÇ¼ʧ°ÜµÄIP£º
fail2ban-client set sshd banip 192.168.1.200
Îå¡¢ÐÔÄÜÓÅ»¯£º´Óµ¥»úµ½¼¯Èº
Êý¾Ý¿â¶Áд·ÖÀë
¹¤¾ß£ºMySQL Proxy»òProxySQL
ÅäÖÃʾÀý£º
-- ½«¶Á²Ù×÷·ÖÁ÷µ½´Ó¿â
SELECT * FROM player_data --> ´Ó¿âIP:3306
UPDATE player_data SET hp=100 --> Ö÷¿âIP:3306
ÓÎÏ··þÎñ¶Ë¸ºÔؾùºâ
¹¤¾ß£ºNginx·´Ïò´úÀí£¨TCP²ãת·¢£©
stream {
upstream mir_servers {
server 192.168.1.100:7100;
server 192.168.1.101:7100;
server {
listen 7100;
proxy_pass mir_servers;
}
Áù¡¢·¨ÂÉÓëÔËά·çÏÕÌáʾ
Êý¾Ý±¸·ÝÇ¿ÖÆÒªÇó
ÿÈÕÈ«Á¿±¸·Ý + ÿСʱÔöÁ¿±¸·Ý£¨Ê¹ÓÃcron¶¨Ê±ÈÎÎñ£©£º
mysqldump -u root -p mirdb | gzip > /backup/mirdb_$(date +%F).sql.gz
Ó¦¼±Ô¤°¸
×¼±¸±¸ÓÃÓòÃûºÍ·þÎñÆ÷£¬·ÀÖ¹Ö÷ÓòÃû±»·â½û¡£
¶¨ÆÚ²âÊÔÔÖ±¸Á÷³Ì£¨Ä£Äâ·þÎñÆ÷¶Ïµç¡¢Êý¾Ý¿â±ÀÀ£³¡¾°£©¡£
Íæ¼ÒÁ÷ʧÂʸߣ¿·þÎñÆ÷Ƶ·±±ÀÀ££¿±¾ÎĽ«½ÌÄã´òÔìÒ»¸ö24Сʱ²»å´»ú¡¢¿¹¹¥»÷¡¢Ò×À©Õ¹µÄÆæ¼£MU£¬ÊʺÏÒÑÕÆÎÕ»ù´¡¼ÜÉèµÄÍæ¼Ò½ø½×ѧϰ¡£
¶þ¡¢¸ß¿ÉÓÃÐÔ·þÎñÆ÷µÄºËÐÄÒªËØ
Ó²¼þÈßÓà
Ë«»úÈȱ¸£º×¼±¸Á½Ì¨·þÎñÆ÷£¬Ö÷·þÎñÆ÷¹ÊÕÏʱ×Ô¶¯Çл»±¸Óûú£¨ÐèʹÓÃKeepalived»òÔÆ·þÎñ¸ºÔؾùºâ£©¡£
·Ö²¼Ê½´æ´¢£º½«Êý¾Ý¿âºÍÓÎÏ·Êý¾Ýͬ²½µ½¶ą̀·þÎñÆ÷£¨ÍƼöʹÓÃrsync»òÔÆ´æ´¢£©¡£
ÍøÂçÓÅ»¯
BGP¶àÏß½ÓÈ룺ʹÓöàÔËÓªÉÌÏß·£¨µçÐÅ+ÍøÍ¨+ÒÆ¶¯£©£¬¼õÉÙÍæ¼ÒÑÓ³Ù¡£
CDN¼ÓËÙ£º¾²Ì¬×ÊÔ´£¨ÈçµØÍ¼Îļþ¡¢¿Í»§¶Ë£©Í¨¹ýCDN·Ö·¢£¬½µµÍ·þÎñÆ÷´ø¿íѹÁ¦¡£
°²È«·À»¤
DDoS·ÀÓù£º²¿ÊðCloudflare»ò°¢ÀïÔÆ¸ß·ÀIP£¬¹ýÂ˶ñÒâÁ÷Á¿¡£
Êý¾Ý¿â¼ÓÃÜ£º¶ÔMySQLÓû§ÃÜÂë½øÐÐSHA-256¼ÓÃÜ£¬·ÀÖ¹ÍϿ⹥»÷¡£
Èý¡¢ÊµÕ½£º´î½¨Ë«»úÈȱ¸·þÎñ¶Ë
²½Öè1£ºÅäÖÃÖ÷´Ó·þÎñÆ÷
Ö÷·þÎñÆ÷£¨IP: 192.168.1.100£©
°²×°MySQL²¢¿ªÆô¶þ½øÖÆÈÕÖ¾£¨ÐÞ¸Ämy.cnf£©£º
server-id=1
log-bin=mysql-bin
µ¼³ö³õʼÊý¾Ý¿â£ºmysqldump -u root -p mirdb > mirdb.sql
´Ó·þÎñÆ÷£¨IP: 192.168.1.101£©
ͬ²½Ö÷·þÎñÆ÷Êý¾Ý£º
mysql -u root -p mirdb < mirdb.sql
ÅäÖôӿâ¼àÌý£º
server-id=2
relay-log=mysql-relay-bin
read-only=1
²½Öè2£º×Ô¶¯¹ÊÕÏÇл»£¨Ê¹ÓÃKeepalived£©
ÔÚÁ½Ì¨·þÎñÆ÷°²×°Keepalived£º
apt-get install keepalived # Debian/Ubuntu
yum install keepalived # CentOS
±à¼ÅäÖÃÎļþ/etc/keepalived/keepalived.conf£º
vrrp_instance VI_1 {
virtual_router_id 51
interface eth0
virtual_ipaddress {
192.168.1.1000/24 # ÐéÄâIP£¨VIP£©
priority 100 # Ö÷·þÎñÆ÷ÓÅÏȼ¶¸ü¸ß
Æô¶¯·þÎñ£ºsystemctl start keepalived
Ч¹û£ºµ±Ö÷·þÎñÆ÷å´»úʱ£¬VIP×Ô¶¯Æ¯ÒƵ½´Ó·þÎñÆ÷£¬Íæ¼ÒÎÞ¸ÐÖªÇл»¡£
ËÄ¡¢·ÀÓù³£¼û¹¥»÷ʵս
µÖÓùCC¹¥»÷£¨Ë¢¹Ö½Å±¾ÀÄÓã©
·½°¸£ºÏÞÖÆÍ¬Ò»IPµÄÇëÇóƵÂÊ
ʹÓÃiptablesÀ¹½Ø¸ßƵÁ¬½Ó£º
iptables -A INPUT -p tcp --dport 7100 -m connlimit --connlimit-above 50 -j DROP
ÔڵǼÆ÷´úÂëÖмÓÈëÑéÖ¤Â루ÈçGoogle reCAPTCHA£©¡£
·ÀÖ¹Êý¾Ý¿â±»±¬ÆÆ
·½°¸£ºÇ¿ÖƸ´ÔÓÃÜÂë + µÇ¼ʧ°ÜËø¶¨
ÐÞ¸ÄMySQLÅäÖÃmy.cnf£º
plugin-load-add = auth_socket.so
password_history = 6 # Ç¿ÖÆÃÜÂë°üº¬´óСд¡¢Êý×Ö¡¢·ûºÅ
ʹÓÃFail2ban×Ô¶¯·â½û¶à´ÎµÇ¼ʧ°ÜµÄIP£º
fail2ban-client set sshd banip 192.168.1.200
Îå¡¢ÐÔÄÜÓÅ»¯£º´Óµ¥»úµ½¼¯Èº
Êý¾Ý¿â¶Áд·ÖÀë
¹¤¾ß£ºMySQL Proxy»òProxySQL
ÅäÖÃʾÀý£º
-- ½«¶Á²Ù×÷·ÖÁ÷µ½´Ó¿â
SELECT * FROM player_data --> ´Ó¿âIP:3306
UPDATE player_data SET hp=100 --> Ö÷¿âIP:3306
ÓÎÏ··þÎñ¶Ë¸ºÔؾùºâ
¹¤¾ß£ºNginx·´Ïò´úÀí£¨TCP²ãת·¢£©
stream {
upstream mir_servers {
server 192.168.1.100:7100;
server 192.168.1.101:7100;
server {
listen 7100;
proxy_pass mir_servers;
}
Áù¡¢·¨ÂÉÓëÔËά·çÏÕÌáʾ
Êý¾Ý±¸·ÝÇ¿ÖÆÒªÇó
ÿÈÕÈ«Á¿±¸·Ý + ÿСʱÔöÁ¿±¸·Ý£¨Ê¹ÓÃcron¶¨Ê±ÈÎÎñ£©£º
mysqldump -u root -p mirdb | gzip > /backup/mirdb_$(date +%F).sql.gz
Ó¦¼±Ô¤°¸
×¼±¸±¸ÓÃÓòÃûºÍ·þÎñÆ÷£¬·ÀÖ¹Ö÷ÓòÃû±»·â½û¡£
¶¨ÆÚ²âÊÔÔÖ±¸Á÷³Ì£¨Ä£Äâ·þÎñÆ÷¶Ïµç¡¢Êý¾Ý¿â±ÀÀ£³¡¾°£©¡£

