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