nginx基础配置,高可用,fence机制,数据的同步

nginx安装在server1–172.25.254.1
server2-172.25.254.2 和server3-172.25.254.3为服务器

1:nginx官网下在安装包

1.1:nginx-1.10.1.tar.gz

tar zxf nginx-1.10.1.tar.gz 

解压完成后进入到解压后的目录

1.2编辑源文件nginx-1.10.1/auto/cc/gcc和nginx-1.10.1/src/core/nginx.h

vim  nginx-1.10.1/auto/cc/gcc
178 # debug
179 #CFLAGS="$CFLAGS -g"
##编译时不需要debug,du -sh /usr/local/nginx占内存更小

这里写图片描述

vim nginx-1.10.1/src/core/nginx.h
 14 #define NGINX_VER          "nginx" 
##curl查看时不显示nginx版本号

这里写图片描述

1.3编译

./configure --prefix=/usr/local/nginx --with-http_ssl_module   --with-http_stub_status_module ##指定路径和ssl模块,编译过程中根据报错缺那些依赖包安装就行
yum install openssl-devel  zlib-devel prce-devel
make && make install ##安装

4:将nginx启动脚本链接到正常位置(非必要做法,只是为了方便)

/usr/local/nginx/conf/nginx.conf ##主配置文件
/usr/local/nginx/sbin/nginx ##主程序

 ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/
 ##/usr/local/nginx/sbin/nginx这个二进制可执行文件是启动nginx服务的,加入环境变量中,就可以使用了
 nginx   ##启动nginx服务  (注意端口冲突)
 nginx -t ##查看nginx配置文件是否有错
 nginx -s reload ##重新加载nginx文件
 nginx -s stop  ##停止nginx服务

nginx启动以后,浏览器检测
这里写图片描述

5:编辑nginx主配置文件vim /usr/local/nginx/conf/ndinx.conf

vim /usr/local/nginx/conf/ndinx.conf
--->>
2 # user  nobody; nginx服务的所有人所有组
ps aux  ##查看该进程,显示如下

这里写图片描述

useradd nginx ##新建nginx用户
id nginx
uid=501(nginx) gid=501(nginx) groups=501(nginx)
vim /usr/local/nginx/conf/ndinx.conf
--->>
   user  nginx nginx;
nginx -s reload
ps aux  ##再次查看

这里写图片描述

vim /usr/local/nginx/conf/ndinx.conf

     2  user  nginx nginx;
     3  worker_processes  2;   ##工作核心,根据服务器cpu核数来设定,也可以调用auto函数自动匹配,指定两个cpu进程
     4  worker_cpu_affinity 01 10; ##默认没开启,分别代表两个逻辑cpu,01为1,10为2,我们只有两个cpu工作
ps aux查看进程

这里写图片描述
这里写图片描述

 13 events {
 14     worker_connections  65535;  链接文件数默认太少该为65535,这里改完并不生效,还要配置其他文件
 15 }

这里写图片描述

sysctl -a | grep file    ##查看系统文件系统自身所能支持的最大文件数
vim /etc/security/limits.conf
su - nginx
ulimit  -n  查看为65535表示改过来了

这里写图片描述
这里写图片描述

负载均衡

  2 user  nginx nginx;
  3 worker_processes  2;
  4 worker_cpu_affinity 01 10;

 13 events {
 14     worker_connections  65535;
 15 }
 16 
 17 
 18 http {
 19     upstrean westos{
 20         server 172.25.254.2:80;
 21         server 172.25.254.3:80;
 22    }

 121         server {
 122            listen 80;
 123            server_name www.westos.org;
 124            
 125            location /{
 126                 proxy_pass http://westos;
 127         }
 128    }

-------------------------
nginx -t   ##检测语法错误
nginx -s reload  ##重新加载nginx服务

浏览器所在主机添加本地解析/etc/hosts

172.25.254.1 www.westos.org
curl www.westos.org #测试,默认算法为rr轮叫

这里写图片描述

端口映射:改服务器2的httpd端口为8080

vi /etc/httpd/conf/httpd.conf
 --->>136 Listen 8080
/etc/init.d/httpd restart

nginx主机配置文件

vim /usr/local/nginx/conf/ndinx.conf

 18 http {
 19     upstream westos{
 20         server 172.25.254.2:8080;
 21         server 172.25.254.3:80;
 22    }
nginx -s reload

真机测试
这里写图片描述

nginx负载均衡健康检查

当服务器2和3都挂了的情况下自己服务
nginx主机配置http服务端口为8080(避免端口冲突)

vim /etc/httpd/conf/httpd.conf

135 #Listen 12.34.56.78:80
136 Listen 8080

vim /usr/local/nginx/conf/nginx.conf

 18 http {
 19     upstream westos{
 20         server 172.25.254.2:8080;
 21         server 172.25.254.3:80;
 22         server 127.0.0.1:8080 backup;
 23    }
130         server {
131            listen 8080;
132            server_name localhost;
133            charset utf-8;
134 
135            location /{
136                 root /backup;
137                 index index.html;
138         }
139    }    
mkdir /backup
vim /backup/index.html
 ---<h1>服务器正在维护...</h1>
 nginx -s reload

down掉后台两台服务器,测试

[root@host2 ~]# /etc/init.d/httpd stop
[root@host3 ~]# /etc/init.d/httpd stop

这里写图片描述

nginx负载均衡算法,默认情况下是rr轮叫

实验前开启两条热爱服务器http服务

#1.least_conn算法,那台服务器压力小,选择那台服务器处理数据请求,这个实验效果不太明显

这里写图片描述

#2:ip_hash链接分配,同一个ip负载均衡新的后端服务器

这里写图片描述

#3:hash $request_uri consistent模块cdn发来的数据包都是同一个ip,这个模块根据ip来负载均衡
    18  http {
    19      upstream westos{
    20      hash $request_uri consistent;
    21      server 172.25.254.2:8080;
    22      server 172.25.254.3:80;
    23      #server 127.0.0.1:8080 backup;
    24     }
#4:sticky模块,版本最好低些,这里的版本就ok,这个模块主要用来cookies缓存:nginx-sticky-module-ng.tar.gz
mv /usr/local/nginx/conf/nginx.conf /mnt
tar zxf nginx-sticky-module-ng.tar.gz
rm -fr /usr/local/nginx
rm -fr /root/nginx-1.10.1
tar /root/nginx-1.10.1.tar.gz 
cd /root/nginx-1.10.1
vim /root/nginx-1.10.1/auto/cc/gcc
vim /root/nginx-1.10.1/src/core/nginx.h
##同之前的操作
编译:./configure --prefix=/usr/local/nginx --with-http_ssl_module   --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
yum install openssl-devel  zlib-devel prce-devel
make && make install ##安装

ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/
mv  /mnt/nginx.conf /usr/local/nginx/conf/
nginx 
vim /usr/local/nginx/conf/nginx.conf
---->18 http {
     19     upstream westos{
     20     sticky;
    21     server 172.25.254.2:8080;
    22     server 172.25.254.3:80;
    23     #server 127.0.0.1:8080 backup; 不支持
    24     }

nginx -s reload

这里写图片描述

二:高可用

1.实验前改算法为rr默认的

vim /usr/local/nginx/conf/nginx.conf
---->18 http {
     19     upstream westos{
     20     #sticky;
    21     server 172.25.254.2:8080;
    22     server 172.25.254.3:80;
    23     #server 127.0.0.1:8080 backup; 不支持
    24     }

nginx -s reload

host1 和host4安装ricci 设置密码 启动服务,设置开机启动

yum install ricci
passwd ricci
-->>123abc
/etc/init.d/ricci start
chkconf ricci on

host1安装luci

yum install luci
/etc/init.d/luci start
chkconf luci on

host1和host4要有自己和彼此的解析
这里写图片描述
这里写图片描述
浏览器所在主机也要有host1和host4以及自己的解析
这里写图片描述

浏览器输入

https://172.25.254.1:8084

这里写图片描述
这里写图片描述
这里写图片描述
ok
这里写图片描述

2基本配置

1.Nginx 主机 host1 安装 ricci,设置密码,开机启动,安装 luci 工具,编写 nginx 启动
脚本,赋予 x 权限放到/etc/init.d/目录下,
2.把 nginx 主机的/uar/local/nginx 目录给 host4 考一份/usr/local/nginx,
编写启动脚本,从/etc/init.d/下复制一份http的启动脚本,修改修改如下

这里写图片描述
这里写图片描述
这里写图片描述

3进入图形化管理

3.1真机浏览器:https://172.25.254.1:8084 ,显示以下界面,没有则没配置好
这里写图片描述
3.2create 创建cluster
这里写图片描述
3.3Failovers Domains –Add
这里写图片描述
这里写图片描述
3.4Resources
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
3.5Servers Groups
添加IP Address(vip) 和Script 脚本(nginx启动脚本)
这里写图片描述
这里写图片描述
这里写图片描述
注意状态Status nginx前边有红点表示有问题
3.6返回节点Node看下
这里写图片描述

4,如果前边正常的化会看到以下:Host1和host4查看 clustat ,vip再host4上

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

四.高可用实验

Down掉host1(使其内核崩溃),再次测试vip 移动到了host1上,同时httpd服务正常
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

五.fence机制,当某一台nginx服务器出现问题时会强制断电

1客户主机(http请求主机安装)
这里写图片描述
这里写图片描述
这里写图片描述
2.配置fence:

命令:fence_virtd -c

把中括号内的内容复制到后边回车即可
这里写图片描述
Interface [virbr0]: br0 ##特殊
这里写图片描述
输入y保存退出
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

六.在浏览器上设置fence连接:选择多播模式

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
Host4方法同上,点击node节点host4,进去的操作同上,uuid到virt-manger中查看或者root用户身份virsh list –uuid

测试

这里写图片描述

echo c >/proc/sysrq-trigger   ##内核崩溃

这里写图片描述
这里写图片描述
自动重启查看
这里写图片描述

七.管理存储~~LVM- –ISCSI存储

1.Ext4:本地文件系统,数据不同步

1.1
这里写图片描述
这里写图片描述
这里写图片描述

 38 <target iqn.2018-04.com.example:host3.target1>
 39         backing-store /dev/vdb
 40         initiator-address 172.25.254.1
 41         initiator-address 172.25.254.4
 42 </target>

这里写图片描述
1.2.在host1和host4上同时做:

yum install -y iscsi-initiator-utils.x86_64
iscsiadm -m discovery -t st -p 172.25.254.3 ##查看host3上iscsi的可用
iscsiadm -m node -l             ##连接
cat /proc/partitions    ##查看

这里写图片描述
这里写图片描述
1.3
这里写图片描述

注意Host1创建完成后,host4查看,没同步说明有问题

这里写图片描述
mkfs.ext4 /dev/clustervg/demo
host1和host4挂载到各自的mnt上,host1再/mnt里边新建文件,host4是不会同步的,除非卸载重新挂上

2数据库实例

(1)host1和host4安装mysql-server,启动数据库,将逻辑卷挂载到/mnt,cp -p /var/lib/mysql/* (除了mysql.sock) 到/mnt上(实际上数据被写进逻辑卷中了),取消挂载后关闭数据库再把mnt挂载到/var/lib/mysql上,ll -d /var/lib/mysql/所有人所有组为root,设置所有人所有组为mysql
(2)取消挂载host1和host2的逻辑卷挂载,关闭浏览器端配置:挂载逻辑卷到/var/lib/mysql/上,配置以下

a设置挂载参数
这里写图片描述

b添加虚拟ip
这里写图片描述
c.添加mysql启动脚本
这里写图片描述
d.add failover domain
这里写图片描述
e.添加source group
依次添加vip,文件系统,脚本,点击提交Submit
f.点击start,host1和host4重启后,查看,正常工作
这里写图片描述
这里写图片描述
g.真机测试,以下报错正常,数据库没授权
这里写图片描述
Host1上进入mysql授权
mysql> create user westos@’172.25.254.51’ identified by ‘passwd’;
mysql> grant all on . to westos@’172.25.254.51’ identified by ‘passwd’;
再次测试:
这里写图片描述

gfs:Gfs2 分布式集群锁文件系统

Gfs2 分布式集群锁文件系统(全局文件系统 )存储server通过iscsi共享1,2主机挂载存储,达到高可用.利用RHCS搭建GFS2高可用集群文件系统,且保证两个节点能够同时对存储设备进行读写访问.
1.

clusvcadm -d mysql  ##关闭服务进行配置
mkfs.gfs2 -p lock_dlm -t westos_ha:mygfs2 -j 3 /dev/clustervg/demo
        //#若卡住不动 dd if=/dev/zero of=/dev/clustervg/demo bs=1024 count=1 

这里写图片描述
2.
host1:
mount /dev/clustervg/demo /mnt
host4:
mount /dev/clustervg/demo /mnt

测试:此时在/mnt上建立一个文件会自动同步到server4上

3.接下来可使用HA进行挂载管理,为了防止集群坏掉影响文件系统使用。也可直接把路径添加进开机fstab文件中实现开机自启动。
这里写图片描述

gfs2文件系统拉伸(说明数据同步)

(1)Host1上df -H:##已经使用的407M为3个日志文件占用的
这里写图片描述
(2) lvextend -L +2G /dev/clustervg/lab
gfs2_grow /dev/clustervg/lab
df -H

这里写图片描述
(3)gfs2 日志添加
Host1上:
gfs2_jadd -j 2 /dev/clustervg/demo ##增加两个日志,Host4上随之改变
这里写图片描述
这里写图片描述

四.nginx集群删除

浏览器中:base1/base2 –>leave cluster ->delete
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xixlxl/article/details/79920200