自各儿学习nginx,HA 第二天

自己学习nginx,HA 第二天
昨天装完了heartbeat

今天就开始装nignx  相比于heartbeat nignx就好装多了,自己下了

nginx-1.4.4.tar.gz  pcre-8.34.tar.gz 包 自己装就行了。记得最后要把 pcre lib下面的libpcre.so.1  cp 到 /lib 目录,这样 nginx 就顺利的启动了


简单修改nginx.conf 文件, 讲server 监控80端口下面的 location 中得root 改成我们共享的那个文件夹,里面有一个index.html 。其他的 先不要改了 以后再说。

安装以后 可以自己写个启动脚本 放到 /etc/init.d/下面,我就懒得写着上面了,,网上也是一大堆, 这个脚本文件很重要,因为heartbeat的 haresource 中要使用,我们的 slave 服务器总不能吧这些服务一直开着吧,所以就需要主服务器down掉了以后 然后再把这些服务开启,(貌似讲了一大堆废话)

这里面有 启动脚本 很详细
http://blog.chinaunix.net/uid-20622737-id-3464285.html

完事具备 开始配置 heartbeat 的三个配置文件了,这时候记得 把第二块网卡的改成心跳ip 当然 用host-only方式来配置第二块网卡,用10.10.10.1 和 10.10.10.2来配置

首先是重要的三个文件 ha.cf , authkeys ,haresources

这几个文件都可以从doc里面找到,然后就拷贝过去,或者也可以自己touch一个,拷贝过去的里面可以看到很多配置多看看。。

首先 配置ha.cf
logfile /var/log/ha-log
##设定心跳(监测)时间时间为2秒
keepalive 2 #多长时间检测一次
warntime 5 #连续多长时间联系不上后开始警告提示
deadtime 20 #连续多长时间联系不上后认为对方挂掉了(单位是妙)
initdead 120 #这里主要是给重启后预留的一段忽略时间段(比如:重启后启动网络等,如果在网络还没有通,keepalive检测肯定通不过,但这时候并不能切换)
#采用bond0的udp广播用来发送心跳信息
bcast eth1
#采用网卡eth1的udp单播来通知心跳,ip应为对方IP,建议采用单播。当一个网段有多台这样cluster话,则一定要采用单播,否则每组cluster都会看到对方的节点,从而报错。这个是两个节点不在一个区段ip不同使用
#ucast eth1 10.10.10.10
##使用udp端口694 进行心跳监测
udpport 694
auto_failback on #恢复正常后是否需要再自动切换回来。
##节点1的HOSTNAME,必须要与 uname -n 指令得到的结果一致。
node prettygirl   这里要在hosts 文件里面设置哦 亲 下面那个node 也要哦
##节点2的HOSTNAME
node web1
##通过ping 网关来监测心跳是否正常
ping 192.168.137.1
hopfudge 1
deadping 5
#指定和heartbeat一起启动、关闭的进程
#respawn hacluster /usr/local/lib64/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster
#是否采用v2 style模式,在三节点以上时一定要打开
#crm on

haresources 文件 这个文件感觉很重要,里面有虚拟ip地址,还有当主机当掉以后备份机器需要启动的服务(这也就是为什么要把nginx 放在init.d服务下面了)
prettygirl 192.168.137.55 nginx  #后面那个是虚拟IP 这个hb会自己创建,或者 可以接 Filesystem::/dev/sdb2::/www::ext3::rw  //示例挂接一个文件系统,包括设备名,挂接点、类型及权限 自动启动全靠他了

authkeys
auth 1
1 crc  #authkeys需要设置读写权限:chmod 600 ./authkeys




搞完发现一点感觉都没有,突然想到利用nginx的集群和反向代理,把第二台 server上安装2个tomcat 分别是8080.8089,再搞一台虚拟机,哎 公司电脑 不敢瞎搞,什么时候才有钱自己买个电脑 呜呜。

配置nginx.conf

events{
  use epoll
  worker_connections 2048
}
http{
  include /etc/nginx/mine.types;
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log;
 
   sendfile on;
   keepalive_timeout 65;
   gzip on;

   include /etc/nginx/conf.d/*.conf;
  
   #upstream !!!!这里的backend_name 要和下面的server_name 还有 如果要反向代理的proxy_pass 一致。我想的流程应该是本机监听80端口,(我是不是理解错了,怎么和LVS负载均衡一样了),然后通过nginx的proxy_pass 来转到upstream下面的真实服务器。(有没有大神教教我这块的知识)
   upstream backend_name{ 
        server xx.xx.xx.xx:xx weight=2 max_fails=3; 
        server www.xxx.com weight=1; 
        server unix://xxx/xxx; 
        #... 
    }
1、 轮询 每个请求按时间顺序分配到不同的后端服务器了,后端服务器down掉,自动切除;
2、weight  设定服务器权值: 如weight=2    服务器性能不均时候使用 。weight: 默认为1,weight越大,负载的权重越大;
3、 ip_hash 每个请求按访问ip的hash结果分配,每个访客有固定的后端服务器,可以解决session问题;
4、 fair(第三方) 按后端服务器的响应时间来分配,响应时间短的优先分配
5、url_hash (第三方) 按访问的url的hash结果分配,使每个url定向到同一个后端服务器,后端为缓存服务器比较有效。
    server{
       listen 80;
       server_name www.prettygirl.com;
       location /{
           proxy_pass http://backend_name;
#首先说明 proxy_set_header 指令在向反向代理的后端Web服务器发起请求时添加指定的 Header头信息,后端web服务器有多个基于域名的虚拟主机时,通过头信息Host,用于指定请求的域名,这样后端web才能识别反向代理请求哪个虚拟主机处理。
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
#在nginx反向代理添加Header头信息 X-Forwarded-For在配合后端服务器日志文件的$http_x_Forwarded_for这条就可以获得用户的IP地址
           proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_fo;
                 }
      #当然nginx的强大之处也可以对静态文件和图片什么的文件处理
       location ~ \.{
               root
               fastcgi
         }
    }

}

这里写的比较匆促 以后会慢慢修改 先发上去 以后自己看!这是自己看的  发现自己记笔记过几天就乱了 写到这里 以后存多久查找方便,不错 ,。。。