func的应用

func最近好像热的很。安装也很方便。分为master和client,两端都需要安装func和certmaster

首先是下载func和certmaster

wget http://download.fedora.redhat.com/pub/epel/5/i386/func-0.21-1.el5.noarch.rpm
wget http://download.fedora.redhat.com/pub/epel/5/i386/certmaster-0.20-2.el5.noarch.rpm

rpm -ivh certmaster-0.20-2.el5.noarch.rpm
rpm -ivh func-0.21-1.el5.noarch.rpm

master:

然后配置 /etc/certmaster/certmaster.conf 主要是 listen addr = 最好为空,这样你的所有网卡的 51235 都被监听

minion.conf 设置主机名certmaster = http://www.zauc.com

然后检查一下master的设置 func “*” check –certmaster 还有 func “*” check –minion

然后 service certmaster start & service funcd start

必须在/etc/hosts里把任何域名对应的ip写清楚.

配client

配置 /etc/certmaster/minion.conf , certmaster = 你的master的hostname, 注意,必须在/etc/hosts里把任何域名对应的ip写清楚.

然后

service certmaster start & service funcd start

然后在master上运行 certmaster-ca –list 看看有没有client的hostname出现,然后用 certmaster-ca –sign[client hostname] 生成证书.

测试的话, 在master上运行 func “client hostname” ping

还能运行其它命令

func '*' check
func '*' ping
func "*" call system list_modules
func "*" call command run "/bin/echo hello world"

以上就是func的基本安装方式,看似很容易。但是发现一个问题,这个东西不能自定义分组。只能根据主机名来进行批量修改。而且这个东西现在只能运行在 redhat机器上,你要想在bsd上运行这个可不能了。但是毕竟算是走出了一步,要是能结合cluster ssh一些优点应该是有很大的前途。毕竟互联网的发展以后需要很多人管理几千台以上的服务器。

nginx的geo模块应用

nginx也算是可以根据来源IP来进行负载均衡了。
nginx默认安装就是支持geo模块的。
安装完成后编辑nginx.conf这个主配置文件如下:

user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid        logs/nginx.pid;

events {
        worker_connections 1024;
}

http {
        include         mime.types;
        default_type    application/octet-stream;
        sendfile        on;
        keepalive_timeout 65;
        geo $cncip {
                default 1;    #未定义IP的默认为1
                include cnc.conf;    #包含进cnc.conf文件
        }
        server {
                listen 80;
                server_name www3.zauc.com;
                location / {
                        if ($cncip) {
                                rewrite ^ http://www.baidu.com;   #未定义在cnc.conf文件中的IP重定向到www,baidu.com
                        }
                        root /home/zauc/web;
                        index index.wml index.html;

                }
        }
}

然后创建cnc.conf文件如下
#192.168.30.0/24 0;
192.168.21.0/24 0;

nginx 的wiki对于这个模块的说明在http://wiki.codemongers.com/NginxHttpGeoModule有粗略的说明。我们可以发现在nginx.conf主控制文件内也可以进行分类。

首先是在一开始定义好

geo  $country  {
            default          no;
            include          conf/geo.conf;
            127.0.0.0/24     us;
            127.0.0.1/32     ru;
            10.1.0.0/16      ru;
            192.168.1.0/24   uk;
        }

然后在location里根据上面定义的名字来进行rewrite。

基于apache的反向代理和负载均衡

这个是apache2.2以后增加的新的特性。

首先我们这边有2个域名。一个是www.timo.com还有一个是mail.timo.com这两个域名。同时www.zauc.com内网有2台机器 (192.168.0.10和192.168.0.11),当然也可以是外网.mail.zauc.com这个域名的内网IP为 (192.168.0.20)

要使用proxy和blance一定要在编译的时候加入proxy和blance.

./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-modules=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-vhost-alias
make
make install

安装完成后在extra/httpd-vhosts.conf中进行如下配置。

    ServerAdmin timo@timo.com
    ServerName www.timo.com
    ProxyPass / balancer://www.timo.com/
    ErrorLog "logs/www.timo.com-error_log"
    CustomLog "logs/www.timo.com-access_log" common

   ServerAdmin timo@timo.com
    ServerName mail.timo.com
    ProxyPass / http://192.168.0.20/
    ProxyPassReverse / http://192.168.0.20/
    ErrorLog "logs/mail.timo.com-error_log"
    CustomLog "logs/mail.timo.com-access_log" common

而www.timo.com还需要在httpd.conf进行配置

ProxyRequests Off

    BalancerMember http://192.168.0.10 loadfactor=1<br />
    BalancerMember http://192.168.0.11 loadfactor=1

这里只是简单的一个配置。详细的可以参考下apache2.2中文文档中的说明