Kao što sam prošlog meseca obećao u prvom delu ovog teksta, evo i nastavka: Podešavanje mmm-a na CentOS serverima.
Prvi korak je instalcija softvera. Pre svega, treba nam način da dođemo do softvera, a na CentOS-u je to uobičajeno dodavanjem novog repo-a. Moja preporuka, ne samo za mmm, već i zbog dodatne funkcionalnosti je EPEL repozitorijum. Jednom kada ste ga uključili, kreće mmm instalacija:
Na samim DB serverima treba instalirati mmm agent:
# yum install mysql-mmm-agent mysql-mmm
A na serveru koji će služiti za upravljanje sistemom mmm-monitor:
# yum install mysql-mmm-monitor mysql-mmm
Jednom kad ste ih instalirali na svim računarima treba podesiti osnovni konfiguracioni fajl za sam mmm, koji stoji u /etc/mysql-mmm/mmm_common.conf. Ovaj fajl opisuje arhitekturu sistema i zajednički je bez obzira na ulogu računara, tako da ga možete samo kopirati. Evo i primera:
active_master_role writer
cluster_interface eth0
pid_path /var/run/mmmd_agent.pid
bin_path /usr/lib/mysql-mmm/
replication_user replication
replication_password replication_password
agent_user mmm_agent
agent_password agent_password
ip 192.168.0.10
mode master
peer db2
ip 192.168.0.11
mode master
peer db1
ip 192.168.0.12
mode slave
hosts db1, db2
ips 192.168.0.200
mode exclusive
hosts db1, db2, db3, db4
ips 192.168.0.201, 192.168.0.202, 192.168.0.203
mode balanced
Dodatna podešavanja radimo u odvojenim fajlovima. Na DB serverima dodajemo samo jedan mali fajl, /etc/mysql-mmm/mmm_agent.conf / koji izgleda ovako:
include mmm_common.conf
this db1
Zatim možemo da pokrenemo agent na DB serveru i postavimo ga da se ubuduće sam pokreće:
# /etc/init.d/mysql-mmm-agent start
# chkconfig mysql-mmm-agent on
Na agentu prvo editujemo konfiguracioni fajl za monitor /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
ip 127.0.0.1
pid_path /var/run/mmmd_mon.pid
bin_path /usr/lib/mysql-mmm/
status_path /var/lib/misc/mmmd_mon.status
ping_ips 192.168.0.10, 192.168.0.11, 192.168.0.12
monitor_user mmm_monitor
monitor_password monitor_password
debug 0
Zatim pokrećemo i monitor:
/etc/init.d/mysql-mmm-monitor start
Posle nekog vremena, monitor će se povezati na sve DB servere i prikazaće sledeći status:
# mmm_control show
db1(192.168.0.11) master/AWAITING_RECOVERY. Roles:
db2(192.168.0.12) master/AWAITING_RECOVERY. Roles:
db3(192.168.0.13) slave/AWAITING_RECOVERY. Roles:
Onda možemo da ih sve pokrenemo, jedan po jedan, sa :
# mmm_control set_online db1
# mmm_control set_online db2
# mmm_control set_online db3
Da bi dobili radno stanje sistema:
db1(10.227.0.11) master/ONLINE. Roles: reader(10.227.0.211), writer(10.227.0.210)
db2(10.227.0.12) master/ONLINE. Roles: reader(10.227.0.212)
db3(10.227.0.13) slave/ONLINE. Roles: reader(10.227.0.213)
Na dalje možemo mmm_control koristiti da pogledamo status, ali i detaljne infomacije, sa :
# mmm_control checks
db2 ping [last change: 2013/03/21 09:26:14] OK
db2 mysql [last change: 2013/03/21 09:26:14] OK
db2 rep_threads [last change: 2013/03/21 09:26:14] OK
db2 rep_backlog [last change: 2013/03/21 09:26:14] OK: Backlog is null
db3 ping [last change: 2013/03/21 09:26:14] OK
db3 mysql [last change: 2013/03/21 09:26:14] OK
db3 rep_threads [last change: 2013/03/21 09:26:14] OK
db3 rep_backlog [last change: 2013/03/22 03:04:59] OK: Backlog is null
db1 ping [last change: 2013/03/21 09:26:14] OK
db1 mysql [last change: 2013/03/21 09:26:14] OK
db1 rep_threads [last change: 2013/03/21 09:26:14] OK
db1 rep_backlog [last change: 2013/03/21 09:26:14] OK: Backlog is null
kao i da ručno menjamo status, ili čak i ulogu – naime možemo ručno seliti master proces na drugi računar sa :
# mmm_control move_role writer db2
Ili možemo ručno proglasiti neki host da je offline, npr. za potrebe održavanja, sa :
# mmm_control set_offline db3
a njegov virtuelni IP će preći na neki drugi računar
# mmm_control show
db1(10.227.0.11) master/ONLINE. Roles: reader(10.227.0.211), writer(10.227.0.220)
db2(10.227.0.12) master/ONLINE. Roles: reader(10.227.0.212), reader(10.227.0.213),
db3(10.227.0.13) slave/ADMIN_OFFLINE. Roles:
Ova, bilo ručna, bilo automatska, promena virtuelnog IP-a i njegovo seljenje na neki drugi računar je i glavna prednost mmm-a. Bez obzira na ispad jednog računara ili na potrebu da se neki računar ručno ugasi, aplikacija nastavlja da radi nesmetano, bez ikakve promene u njenoj konfiguraciji! Sve radi automatski, a sve konekcije se ostvaruju preko virtuelnih IP adresa. Neometan rad, otpornost na pojedinačne ispade, kao i efikasno korišćenje svih resursa su razlog zašto mi koristimo ovo rešenje na svojim serverima i zašto svima preporučujemo da ga, makar, uzmu u razmatranje.