mysql-mmm配置

最近一周主要是对mysql的mmm进行的相关测试。

它的官方网站是mysql-mmm.org
mmm其实是一个针对mysql双master的一个套件,是完全使用perl来写的。主要作用是监控2个mysql的状态和在出现问题的情况下进行IP漂移切换。不能算是完全意义上的mysql高可用。只是在传统的双master基础上加个监控和漂移,这个完全可以自己写程序来实现。因为mmm在切换过程中也会导致当前连接的丢失,而且这种模式在innodb的情况下出现故障后恢复是一个非常麻烦的问题。
mmm的主要架构是这样的,一个是mmm
monitor服务器,它来负责监控和切换,所以它的配置文件主要是进行设置如何进行监控。2个mysql服务器是客户端。但是需要配置上虚IP,所以每个mysql服务器最少有3个IP,一个真实的IP,2个虚IP。mmm monitor就是进行切换虚IP的,而不是实际的IP
安装过程就不详细说了,主要是要安装一堆perl包,如果可以cpan的话完全可以用cpan来安装,不然就自己下tar包安装,最后做个rpm包来进行安装。
下面就是整个配置流程:
首先对2个mysql配置好了双master,就是互为主备的那种模式。
首先我们定义一下各个机器的IP,mmm monitor的IP是10.10.36.111, mysql
1的真实IP为10.10.36.112, 虚拟IP为10.10.36.201和10.10.36.202,mysql
2的真实IP为10.10.36.113,虚拟IP同样是10.10.36.201和10.10.36.202。
安装完mmm后首先要对mmm monitor进行配置
cat /etc/mysql-mmm/mmm_monitor.conf

include mmm_common.conf

check_period 1
trap_period 2
timeout 2


check_period 1
trap_period 2
timeout 2


ip                                      127.0.0.1
pid_path                                /var/run/mmm_mond.pid
bin_path                                /usr/lib/mysql-mmm/
status_path                             /var/lib/misc/mmm_mond.status
ping_ips                                10.10.36.113,10.10.36.112


monitor_user                    mmm_monitor
monitor_password                mmm_monitor_password

debug 0

接着是配置mmm_common.conf,这个文件在monitor和agent上都是一样的。
cat /etc/mysql-mmm/mmm_common.conf

active_master_role      writer

cluster_interface               eth0
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user mmm_repl
replication_password mmm_repl_password
agent_user mmm_agent
agent_password                  mmm_agent_password


ip                                      10.10.36.112
mode                                    master
peer                                    mysql_db2


ip                                      10.10.36.113
mode                                    master
peer                                    mysql_db1


hosts                                   mysql_db1,mysql_db2
ips                                     10.10.36.201
mode                                    exclusive


hosts                                   mysql_db1,mysql_db2
ips                                     10.10.36.202
mode                                    balanced

下面这个是10.10.36.112上的agent上的mmm_agent.conf的配置
cat /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf
this mysql_db1

下面是10.10.36.113上的agent的mmm_agent.conf的配置
cat /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf
this mysql_db2

这些都配置完成了,首先是启动2个mysql服务,同时都启动slave。然后各自启动mmm_agent服务。最后是启动mmm_monitor服务。
启动完成后mmm_monitor进行相关事务:
首先是启动监控2个agent服务,启动方式为mmm_contorl set_online mysql_db1以及mmm_control set_online mysql_db2
启动结果我们可以通过mmm_control show来进行展示,也可以检查监控的状态,mmm_contorl checks来检测现在监控的状态。 

###########################################

Best regards
Timo Seven
blog:http://www.timoseven.com
twitter: http://twitter.com/zauc
Linux System Admin  & MySQL DBA

让apache进行ad认证

公司内网都是通过ad进行认证的,为了方便就想到直接用apache basic认证来做网页的认证,毕竟项目只是内网使用。

首先是要让apache支持perl,这个在ubuntu上很容易

apt-get install libapache2-mod-perl2

接着是安装相关perl认证的模块

cpan -i YAML
cpan -i Apache2::AuthenMSAD
cpan -i Apache2::AuthenNTLM
cpan -i Authen::Simple::Apached

最后在apache配置文件中具体网站配置项中添加如下


PerlAuthenHandler Apache2::AuthenMSAD
PerlSetVar MSADDomain xxxx-inc.com #AD认证域
PerlSetVar MSADServer ad.xxxx.com #AD认证服务器
PerlSetVar MSADBaseDN DC=xxxx-inc,DC=com
AuthName "xxxx-INC AD Authentication" #弹出窗口的显示名字
AuthType Basic
PerlSetVar MSADGroup 'xxxx-sysadmin'
PerlSetVar MSADUser timo
Require valid-user

###########################################

Best regards
Timo Seven
blog:http://www.timoseven.com
twitter: http://twitter.com/zauc
Linux System Admin & MySQL DBA

nginx+awstats安装

首先是下载awstats,这个现在是有中文网站了
解压后后放到/usr/local下
然后运行tools/awstats_configure.pl
按照提示进行配置,主要是网站的名字配置

然后是是nginx进行配置,如果是APACHE或者是IIS就不用这样麻烦了。
首先是配置nginx的日志格式

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" $http_x_forwarded_for';

这个要注意其中的标点和空格。

在nginx上跑awstats需要支持fastcgi和perl才可以
fastcgi这个安装方法很多,一般是编译php5的时候直接放进去就可以了。当然我们现在为了方便就直接使用nginx-fcgi脚本http://www.nginx.eu/nginx-fcgi.html

使用脚本前需要安装下列perl模块

perl -MCPAN -e 'install "FCGI“
perl -MCPAN -e 'install "Getopt::Long"'
perl -MCPAN -e 'install "IO::All"'
perl -MCPAN -e 'install "Socket"'

然后用nginx用户执行下列命令

/usr/bin/perl /usr/local/nginx/sbin/nginx-fcgi -S /tmp/fastcgi.sock -l /home/nginx/logs/nginx-cfgi.log -pid 100005

现在新的版本需要提供pid号才可以运行,这个可以自我进行设定。

配置fastcgi_params文件,perl_fastcgi_params同fastcgi_params

vi /usr/local/nginx/cconf/fastcgi_params
fastcgi_param QUERY_STRING       $query_string;
fastcgi_param REQUEST_METHOD     $request_method;
fastcgi_param CONTENT_TYPE       $content_type;
fastcgi_param CONTENT_LENGTH     $content_length;

fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param REQUEST_URI        $request_uri;
fastcgi_param DOCUMENT_URI       $document_uri;
fastcgi_param DOCUMENT_ROOT      $document_root;
fastcgi_param SERVER_PROTOCOL    $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE    nginx/$nginx_version;
<br />
fastcgi_param REMOTE_ADDR        $remote_addr;
fastcgi_param REMOTE_PORT        $remote_port;
fastcgi_param SERVER_ADDR        $server_addr;
fastcgi_param SERVER_PORT        $server_port;
fastcgi_param SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS    200;

然后是awstats在nginix网站配置

   server {
                listen 8000;
                root /usr/local/awstats/wwwroot;
                index index.php;

                location ~* .php$ {
                        fastcgi_pass 127.0.0.1:9000;
                        access_log /home/nginx/logs/host.access.log main;
                        include fastcgi_params;
                }

                location ~* .pl$ {
                        fastcgi_pass unix:/tmp/fastcgi.sock;
                        access_log /home/nginx/logs/host.access.log main;
                        include perl_fastcgi_params;
                }

        }

最后如果执行以下命令没有错误就可以了。有错误就根据提示来进行修正。

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.zauc.com

最后浏览器的访问地址是
http://IP:8000/cgi-bin/awstats.pl?config=www.zauc.com