广告
返回顶部
首页 > 资讯 > 数据库 >CentOS 6.5上安装MySQL-Cluster 7.3.4的过程
  • 381
分享到

CentOS 6.5上安装MySQL-Cluster 7.3.4的过程

2024-04-02 19:04:59 381人浏览 泡泡鱼
摘要

本篇内容主要讲解“Centos 6.5上安装Mysql-Cluster 7.3.4的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学

本篇内容主要讲解“Centos 6.5上安装Mysql-Cluster 7.3.4的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS 6.5上安装mysql-Cluster 7.3.4的过程”吧!

环境说明:CentOS6.5 + Mysql-Cluster 7.3.4(最新GA版本),规划2台机器,一台做控制服务器+负载均衡服务器+数据节点服务器, 另一台做负载均衡服务器+数据节点服务器;


一、下载,这里为了方便安装过程,这里直接使用了RPM包来安装,避开了编译安装的痛苦:
 首先先到www.msyql.com下载如下的RPM安装包 (Http://dev.mysql.com/downloads/cluster/),记得选择RedHat Enterprise linux/oracle Linux下面的 MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar 这个安装包,避免一个接一个下载的痛苦;

二、环境清理以及安装:
1. mysql旧版本清除:
  首先使用如下命令来清理之前操作系统自带的mysql安装:yum -y remove mysql
然后使用如下命令:
rpm -qa | grep mysql*
对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2. mysql cluster版本安装准备:将MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar放到某个目录下(譬如/package) 下面,并且执行如下命令解压:
tar -xvf MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar
得到如下文件清单:
MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-devel-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-embedded-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-shared-compat-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-shared-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-test-gpl-7.3.4-1.el6.x86_64.rpm

 3. mysql cluster版本安装:
  创建文件夹(分如下3个类来创建对应的文件夹)
  存储节点:mkdir /var/lib/mysql/data
    管理节点:mkdir /var/lib/mysql-cluster    SQL节点:可不用  文件夹授权
  进程DIR:    mkdir /var/run/mysqld             
 
  使用如下的命令来变更权限保证可写入:
  chmod -R 1777 /var/lib/mysql
    chmod -R 1777 /var/run/mysqld
    chmod -R 1777 /var/lib/mysql-cluster

    rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
    rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
特别注意,当安装完毕server gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中。
------------------------------------------------------------------------------------------------------
A RANDOM PASSWord HAS BEEN SET FOR THE MySQL root USER !
 You will find that password in '/root/.mysql_secret'.
 You must change that password on your first connect,
 no other statement but 'SET PASSWORD' will be accepted.
 See the manual for the semantics of the 'password expired' flag.
 Also, the account for the anonymous user has been removed.
 In addition, you can run:
  /usr/bin/mysql_secure_installation
 which will also give you the option of removing the test database.
 This is strongly recommended for production servers.
 -----------------------------------------------------------

 4. 配置文件撰写与调整:
 cd /var/lib/mysql-cluster
 vim config.ini
 -----------------------------------------------------------------------------------------------------
 [computer]
 Id=mgr-server-01
 HostName=10.10.0.1

 [mgm default]
 datadir=/var/lib/mysql-cluster

 [mgm]
 HostName=10.10.0.1
 NodeId=60
 ExecuteOnComputer=mgr-server-01
 PortNumber=1186
 ArbitrationRank=2

 [ndbd default]
 NoOfReplicas=2
 DataMemory=8G
 IndexMemory=2G

 [ndbd]
 HostName=10.10.0.1
 DataDir=/var/lib/mysql
 NodeId=1

 [ndbd]
 HostName=10.10.0.2
 DataDir=/var/lib/mysql
 NodeId=2

 [mysqld]
 HostName=10.10.0.1
 NodeId=81

 [mysqld]
 HostName=10.10.0.2
 NodeId=82
 -----------------------------------------------------------------------------------------------------

5.  配置Mysql文件:
vim /etc/my.cnf
 [client]
 Socket=/var/lib/mysql/mysql.sock

 [mysqld]
 max_connections=100
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 ndbcluster
 ndb-connectstring=10.10.0.1

 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

 [mysql_cluster]
 ndb-connectstring=10.10.0.1
 -----------------------------------------------------------------------------------------------------


三、SQL Cluster初次启动命令以及用户密码更改调整:(请严格按照次序启动)
 执行初次启动前请先确认 将两台机器的防火墙关闭(service iptables stop 或者 设定 防火墙端口可通,两个端口即通讯端口1186、数据端口3306 )
初次启动mgt console命令:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
启动均衡节点命令: ndbd --initial
启动数据节点命令:mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
注意在启动过程中需要监测整个控制台输出,发现有错误信息需要及时解决,根据错误日志内容来解决。
------------------------------------------------------------------------------------------------------
如果一起正常,使用如下命令将Management console开启:  ndb_mgm
输入: show
 ndb_mgm> show
 Cluster Configuration
 -----------------------------------------------------------------------------------------------------
 [ndbd(NDB)]    2 node(s)
 id=1    @10.x.0.1  (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0, *)
 id=2    @10.x.0.2  (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0)

 [ndb_mgmd(MGM)] 1 node(s)
 id=60  @10.x.0.1  (mysql-5.6.15 ndb-7.3.4)

 [mysqld(api)]  2 node(s)
 id=81  @10.x.0.1  (mysql-5.6.15 ndb-7.3.4)
 id=82  @10.x.0.2  (mysql-5.6.15 ndb-7.3.4)
 -----------------------------------------------------------------------------------------------------
修正密码:
 当mysqld 启动完毕正常后(可以使用pgrep mysqld来获取进程ID),我们可以使用如下命令修改:
mysql -u root -p;
随机密码(具体请参见/root/.mysql_secret文件获取),进入后使用如下指令修改密码:
SET PASSWORD = PASSWORD('新密码');
几台装有SQL数据节点的服务器皆需要执行一遍上述命令;
------------------------------------------------------------------------------------------------------


四、Cluster效果测试
 使用mysql -u root -p 密码;
输入对应的密码后登陆到系统,按照如下命令开始新建database;
 create database clustertest;
 use clustertest;
 CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;
特别注意,只有使用了NDBCluster引擎的表才会执行同步操作,因此特别需要在上述表加入这个后缀;


五、关闭Cluster:(需要严格按照次序执行)
关闭数据节点:mysqld stop  (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:shell> ndb_mgm -e shutdown
安全的关闭管理节点和数据节点。

关闭后使用如下的进程检测命令查看一下是否退出来了:
pgrep mysqld
ps aux | grep nbdb
如果没有,找到对应的pid进行kill 操作即可。

六、再次启动Cluster方案:
启动整个cluster的次序:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
 ndbd
 mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
 -----------------------------------------------------------------------------------------------------
杂记:
防火墙策略调整: iptables -A INPUT -s 192.168.100.0/24 -i eth3 -p tcp -m tcp -j ACCEPT
修改密码方法一:
mysqladmin -u root password root (更改密码)                    (没有新密码前执行)
mysqladmin -u root -p 'xxxxxx' password 'NewPassword';  (安装完毕后启动mysqld执行)

修改密码方法二:
UPDATE mysql.user SET Password=PASSWORD('Password01!') WHERE User='root';
FLUSH PRIVILEGES;

修改密码方法三:
让mysql以不带安全控制的方式启动:
mysqld_safe --user=mysql --skip-grant-tables --skip-networking;
然后再用前面2种方法修改密码;

注:下文涉及到配置的,如无特别说明,主备机则一致!
一、环境介绍
1、这是我CentOS的版本,CentOS7.1,主备都为该版本
[root@localhost ~]# cat /etc/RedHat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (GCc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015

2、修改主机名并修改host
[root@localhost ~]# hostnamectl set-hostname node-01
[root@localhost ~]# vi /etc/hosts
127.0.0.1node-01在127后面添加node-01

二、拓扑图的规划:
A)
|------------IP地址-----------------|----------|------软件----------|----------|-状态--|
|172.21.4.51(VIP:172.21.4.44 )|----------|keepalived+Nginx|----------|Master |
|172.21.4.52(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Backup|
|---------172.21.4.91-------------|----------|------IIS------------|----------|-WEB1-|
|---------172.21.4.91-------------|----------|------IIS------------|----------|-Web2-|
B)
Internet--
        |
    ============= 
    | ISP Router|
    =============
        |                               |
        |                               |---- Web1 (172.21.4.91)
        |-HA-|eth0--> 172.21.4.51               |
        |             \                 /
        |              \               /
        |               ===VIP(172.21.4.44)===
        |              /               \
        |             /                 \
        |-HA-|eth0--> 172.21.4.52               |
                                       |---- Web2 (172.21.4.92)
                                       |
注:在网关上已针对VIP(172.21.4.44)作了80端口映射。
架构需考虑的问题:
1、Master运行,则Master占有vip且Nginx能够正常服务;
2、Master挂了,则Backup抢占vip且Nginx能够正常服务;
3、任何一台前端nginx服务挂了,则vip资源转移到另一台服务器上,并发送提醒邮件;
4、nginx需要检测后端服务器的健康状态(由于应用是挂在默认网站下的虚拟目录,且无法更改,必须能够对虚拟目录进行健康检查)
5、由于应用需要Session保持,但由于没有做Session共享,实际服务器角色转换时,应用会受到一定的影响。

三、安装前的准备工作
CentOS7环境下,默认是使用FireWallD服务,即使你修改了iptables,重启又被初始化了,需要再 次手动systemctl restart  iptables.service才能使设置的iptables生效,由于FireWallD暂时还没有熟悉使用方法且不知道他比iptables到底有 哪些优势,保险起见,还是换回原先的iptables

1、关闭firewall:
[root@node-01 ~]# systemctl stop firewalld.service
#停止firewall
[root@node-01 ~]# systemctl disable firewalld.service 或 systemctl mask firewalld.service
#禁止firewall开机启动

2、安装iptables防火墙
[root@node-01 ~]# yum install iptables-services -y
[root@node-01 ~]# systemctl enable iptables

3、在进行Keepalived和nginx配置前,务必将集群内的几台主机的通讯相互完全放行(并开放80的Web访问规则),否则很有可能出现脑裂或其他问题,可直接在配置文件内加入以下语句;
[root@node-01 ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -s 172.21.4.51 -j ACCEPT
-A INPUT -s 172.21.4.52 -j ACCEPT
-A INPUT -s 172.21.4.91 -j ACCEPT
-A INPUT -s 172.21.4.92 -j ACCEPT

[root@node-01 ~]# systemctl restart iptables.service

四、Keepalived与Nginx的安装
1、安装ipvsadm
[root@node-01 ~]# yum install ipvsadm
[root@node-01 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvs(IP Virtual Server)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义了。ipvs 具体实现是由 ipvsadm 这个程序来完成的。CentOS7.1默认自带安装了。

2、安装keepalived(其实7.1自带了)
[root@node-01 ~]# yum install keepalived
[root@node-01 ~]# keepalived -v
Keepalived v1.2.13 (03/06,2015)

3、安装当前最新稳定版1.8.0
注1:一开始是用yum安装的nginx,结果发现后端服务器Down机或状态不正常时,nginx也照常转发请求,后面yum erase nginx后,进行了手动安装。因为需要额外添加 nginx_upstream_check_module模块。
注2:安装过程会提示类型这样的错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
所以先安装相应的支持库来解决。pcre,正则表达式匹配支持;zlib,用于压缩等等。
[root@node-01 ~]# yum -y install gcc-c++ pcre-devel zlib-devel

1) 为nginx建立一个www组,并建立一个不登录的账户nginx,放入www用户组
[root@node-01 ~]# groupadd -f www
[root@node-01 ~]# useradd -d /var/cache/nginx -s /sbin/nologin -g www nginx
2) 建立目录用于存放nginx日志文件,并赋权限
[root@node-01 ~]# mkdir /var/log/nginx
[root@node-01 ~]# mkdir /usr/local/nginx
[root@node-01 ~]# chown -R nginx.www /var/log/nginx
[root@node-01 ~]# chown -R nginx.www /usr/local/nginx

3) 分别下载nginx、额外模板及安装
[root@node-01 ~]# mkdir /nginx
[root@node-01 ~]# cd /nginx
[root@node-01 nginx]# wget http://nginx.org/download/nginx-1.8.0.tar.gz
[root@node-01 nginx]# wget https://GitHub.com/yaoweibin/nginx_upstream_check_module/arcHive/master.zip
[root@node-01 nginx]# tar -xvf nginx-1.8.0.tar.gz
[root@node-01 nginx]# unzip master.zip
#在当前目录下解压出nginx_upstream_check_module-master这个目录

[root@node-01 nginx]# cd nginx-1.8.0/
[root@node-01 nginx-1.8.0]# patch -p1 < /nginx/nginx_upstream_check_module-master/check_1.7.5+.patch
#由于安装版1.8.0稳定版,所以选check_1.7.5+.patch这个补丁包,其他版本相应选择即可
#如果提示bash: patch: 未找到命令...应该安装一下patch命令包yum -y install patch

[root@node-01 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=www --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --add-module=/nginx/nginx_upstream_check_module-master
[root@node-01 nginx-1.8.0]# make && make install

便于以后的操作,进行以下设置并制作自启动文件:
[root@node-01 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
[root@node-01 ~]# vi /usr/lib/systemd/system/nginx.service
#加下以下内容:
#---------Begin------------------------------------
[Unit]
Description=nginx - high perfORMance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MaiNPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
#---------end--------------------------------------

[root@node-01 /]# systemctl enable nginx.service
系统启动时让nginx.service自启动。

4) keepalived和Nginx最好也设置开机启动
[root@node-01 ~]# systemctl enable keepalived
[root@node-01 ~]# systemctl enable nginx

五、Keepalived配置
在配置keepalived之前,先关闭selinux
A、vi /etc/selinux/config
B、设置 SELINUX=disabled 保存
C、执行  setenforce 0
如果只想临时关闭,直接输入:setenforce 0
[root@node-01 ~]# vi /etc/keepalived/keepalived.conf
#############keepalived配置#############################################################

! Configuration File for keepalived

global_defs {
}

vrrp_script chk_nginx {
#必须放在track代码的上方,否则无效,测试了几次是这个情况

   script "killall -0 nginx"
   #用shell命令检查nginx服务是否存在

   interval 1
   #时间间隔为1秒检测一次

   weight -15
   #当nginx的进程不存在了,就把当前的权重-15
}

vrrp_instance VI_1 {
    state MASTER
    #主LVS是MASTER,从主机时此项要改为BACKUP,要大写

    interface enp4s0
    #LVS监控网络接口

    virtual_router_id 51
    #同一实例下virtual_router_id必须相同,MASTRE/BACKUP 设置值要一样

    priority 100
    #定义优先级,数字越大,优先级越高,把此份Conf拷贝到另一台机器上时,设置的priority值要比MASTRE权重值低

    advert_int 1
    #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {
        auth_type PASS
        auth_pass 376879148
        #验证类型和密码,有PASS和AH两种,一般用PASS,据说AH有问题,认证密码主备服务器之间一定要一致,否则出错
    }

    virtual_ipaddress {
        172.21.4.44
        #设置虚拟IP,可以有多个地址,每个地址占一行,不需掩码。注意:这个 ip 必须与我们在 lvs 客户端设定的vip相一致
    }

   track_script {
        chk_nginx
        #引用上面的vrrp_script定义的脚本名称
        }

  notify_master "/etc/keepalived/changemail.py master"
  notify_backup "/etc/keepalived/changemail.py backup"
  notify_fault "/etc/keepalived/changemail.py fault"
  #指定当切换到主、备及故障状态时,执行的脚本
}

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

六、HA状态切换时的邮件提醒
[root@node-02 ~]# python -V
Python 2.7.5
[root@node-01 ~]# vi /etc/keepalived/changemail.py

########################changemail.py利用Python2.7程序发邮件###########################

#!/usr/bin/python 
# -*- coding: UTF-8 -*-     
import smtplib 
import socket
import time
from email.MIMEText import MIMEText 
from email.Utils import formatdate 
from email.Header import Header 
import sys

#发送邮件的相关信息,根据实际情况填写 
smtpHost = 'smtp.exmail.qq.com'
smtpPort = '25'
sslPort  = '465'
fromMail = 'youki@appi.com'
toMail   = 'youki@appi.com'
username = 'youki@appi.com'
password = 'xxxxxxx'
#解决中文问题 
reload(sys) 
sys.setdefaultencoding('utf8') 
 
#邮件标题和内容 
subject  = socket.gethostname() + " HA status has changed"
body     = (time.strftime("%Y-%m-%d %H:%M:%S")) + " vrrp transition, " + socket.gethostname() + " changed to be " + sys.argv[1]
 
#初始化邮件 
encoding = 'utf-8' 
mail = MIMEText(body.encode(encoding),'plain',encoding) 
mail['Subject'] = Header(subject,encoding) 
mail['From'] = fromMail 
mail['To'] = toMail 
mail['Date'] = formatdate() 
 
try: 
    #连接smtp服务器,明文/SSL/TLS三种方式,根据你使用的SMTP支持情况选择一种 
    #普通方式,通信过程不加密 
    #smtp = smtplib.SMTP(smtpHost,smtpPort)
    #smtp.ehlo() 
    #smtp.login(username,password) 
 
    #tls加密方式,通信过程加密,邮件数据安全,使用正常的smtp端口 
    #smtp = smtplib.SMTP(smtpHost,smtpPort) 
    #smtp.ehlo() 
    #smtp.starttls() 
    #smtp.ehlo() 
    #smtp.login(username,password) 
 
    #纯粹的ssl加密方式,通信过程加密,邮件数据安全 
    smtp = smtplib.SMTP_SSL(smtpHost,sslPort) 
    smtp.ehlo() 
    smtp.login(username,password) 
 
    #发送邮件 
    smtp.sendmail(fromMail,toMail,mail.as_string()) 
    smtp.close() 
    print 'OK' 
except Exception: 
    print 'Error: unable to send email'
[root@node-01 ~]#
#######################################################################################

1、上面的脚本制作完成后,记得赋权,否则无法执行。
[root@node-01 ~]# chmod +x /etc/keepalived/changemail.py

[root@node-01 ~]#scp /etc/keepalived/keepalived.conf 172.21.4.52:/etc/keepalived
把主机上的配置文件copy到Backup服务器上,现在在两台主机上可以利用 ip addr show命令来查看VIP的获取情况

2、keeplived日志位置指定:
在主从keeplived节点上编译/etc/sysconfig/keepalived文件

[root@node-01 ~]# vi /etc/sysconfig/keepalived
将最后一行KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"

3、修改主从节点日志配置文件/etc/rsyslog.conf
[root@node-01 ~]# vi /etc/rsyslog.conf
加入如下配置:
#keepalived -S 0
local0.*/var/log/keepalived.log

4、重启日志服务
[root@node-01 ~]# systemctl restart rsyslog.service

5、检查/var/log/keepalived.log文件是否存在

注意事项:
1、输出的日志信息: /var/log/messages ,更具体的日志信息输出需要在启动keepalived时加 -d 参数。
2、在都为MASTER且priority一样的情况下,后启的节点(service vrrp start)会取代正在运行的节点变成主用的。
3、一台为MASTER且priority较高的情况下,不受次节点down/up影响,并且其本身再从down变为up时,会抢夺控制权。
4、在都为MASTER且priority一样的情况下,正在运行的主节点down(断网),次节点会自动接管,主节点再起来时不会去抢夺控制权。
#keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
#如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
#如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
#其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
#这里需要注意的是:
#1) 优先级“不会”不断的提高或者降低,当track的对象恢复时,又是一致的
#2) 可以编写多个检测脚本并为每个检测脚本设置不同的weight
#3) 不管提高优先级还是降低优先级,最终优先级的范围是在[1,254],不会出现优先级小于等于0或者优先级大于等于255的情况
#这样可以做到利用脚本检测业务进程的状态,并动态调整优先级从而实现主备切换。

七、nginx配置

[root@node-01 nginx]# vi /usr/local/nginx/conf/nginx.conf
#############nginx配置#############################################################

user  nginx www;
worker_processes  2;
#nginx进程数,建议设置为等于CPU总核心数

#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#为每个进程分配cpu,将N个进程分配到N个cpu,可以写多个或者将一个进程分配到多个cpu
error_log  /var/log/nginx/error.log crit;
#pid       /run/nginx.pid;

events {
        use epoll;
        #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以 能
        worker_connections 102400;
        #最大连接数量,根据硬件调整,理论上每台nginx服务器的最大连接数为worker_processes*s
        }

http {
        include       /usr/local/nginx/conf/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
   
    #tcp_nopush     on;
   
    server_tokens off;
    #nginx隐藏版本号

    keepalive_timeout  65;

    proxy_intercept_errors on;
    #表示使nginx阻止HTTP应答代码为400或者更高的应答

    gzip on;
    #该指令用于开启或关闭gzip模块(on/off)

    gzip_min_length 1k;
    #设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。

    gzip_buffers 4 8k;
    #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 8k代表以8k为单位,安装原始数据大小以16k为单位的4倍申请内存。

    gzip_http_version 1.1;
    #识别http的协议版本(1.0/1.1)

    gzip_comp_level 3;
    #gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)

gzip_types text/plain text/CSS application/JSON application/javascript application/x-javascript text/javascript text/xml application/xml application/xml+rss;
    #匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的,经实测对本网站的图片压缩后,积极反而增大,所以取消图片类的压缩。

gzip_vary on;
    #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

    upstream MyApp{
              ip_hash;
              #1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端 除
              #2.weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不 况
              #3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后题
              #4.fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配

              server 172.21.4.91:80 max_fails=2 fail_timeout=10s;
              server 172.21.4.92:80 max_fails=2 fail_timeout=10s;
              #max_fails默认为1,fail_timeout默认为10秒,默认情况下后端服务器在10秒内出错1次认为服务器异常将停止转发
              check interval=3000 rise=2 fall=2 timeout=1000 type=http;
              #对条目中的所有节点,每3秒检测1次,请求2次正常则标记该机状态为UP
              check_http_send "GET /appicrm HTTP/1.0\r\n\r\n";
              #检测网址子目录,在这里为http://mail.appi.cn/appicrm
                    }
    server
         {
          listen       80;
          server_name  mail.appi.cn;
          charset utf-8;
          location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf|js|css|htm|html)$
                   {
                    access_log image.log;
                    expires 14d;
                    root /usr/local/nginx/proxy_cache;
                    proxy_store on;
                    proxy_temp_path /usr/local/nginx/proxy_cache_image;
                    if ( !-e $request_filename)
                    #文件和目录不存在的时候重定向
                       {proxy_pass http://MyApp;}
                       #rewrite ^(.*) http://www.test.com/test/$domain/ break;
                    }
                    #last:重新将rewrite后的地址在server标签中执行
                    #break:将rewrite后的地址在当前location标签中执行

      location / {
              rewrite ^/(.*)$ /appicrm/$1 last;
              }
         
          location ~* ^/appicrm/.*$ {
                            proxy_set_header        Host $host;
                            proxy_set_header        REMOTE-HOST $remote_addr;
                            proxy_set_header        X-Real-IP $remote_addr;
                            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                            proxy_pass              http://MyApp;
                            client_max_body_size    10m;
                            client_body_buffer_size 128k;
                            proxy_connect_timeout   90;
                            proxy_send_timeout      90;
                            proxy_read_timeout      90;
                            proxy_buffer_size       4k;
                            proxy_buffers           4 32k;
                            proxy_busy_buffers_size 64k;
                            proxy_temp_file_write_size 64k;
                             }
      location /webstatus {
                    check_status;
                    access_log off;
                    error_log off;
                    auth_basic "Restricted";
                    auth_basic_user_file  /usr/local/nginx/conf/htpasswd/test;
                    #allow IP;
                    #deny all;
                     }

      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
      root   html;
      }
   }
}
[root@localhost ~]#
###################################################################################
 
有几个需要注意的问题:
1、如下提示的Pid错误 
7月 15 18:11:24 localhost.localdomain systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument
解 决:注释掉/usr/lib/systemd/system/nginx.service文件内的指定PID路径那一行,后面find nginx 的PID实际存的位置后再修改回正常的,或干脆注释掉,因为我的修改了后面又出错了。nginx安装的时候指定的位置居然不正确,不知道为何!网上有很多 解决方法包括国外网站都说要安装各种支持文件,经测试都是错误答案。
2、Webstatus这个状态查询页面,你肯定不希望所有人都能访问,所以需要加密
[root@node-01 ~] mkdir /usr/local/nginx/conf/htpasswd/
[root@node-01 ~] htpasswd -c /usr/local/nginx/conf/htpasswd/test Youki
New password:
Re-type new password:
Adding password for user auth_user
[root@node-01 ~] vi /usr/local/nginx/conf/nginx.conf
auth_basic "Restricted";
auth_basic_user_file  /usr/local/nginx/conf/htpasswd/test;

将以上两句加入/webstatus节

到此,相信大家对“CentOS 6.5上安装MySQL-Cluster 7.3.4的过程”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: CentOS 6.5上安装MySQL-Cluster 7.3.4的过程

本文链接: https://www.lsjlt.com/news/60817.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CentOS 6.5上安装MySQL-Cluster 7.3.4的过程
    本篇内容主要讲解“CentOS 6.5上安装MySQL-Cluster 7.3.4的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
    99+
    2022-10-18
  • MySQL 5.6.38在RedHat 6.5上通过RPM包安装
    一、安装环境1、操作系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago)2、Mysql版本:MySQL-5.6.38-1.el6.x86_6...
    99+
    2022-10-18
  • CentOS下mysql的安装过程
    这篇文章主要介绍“CentOS下mysql的安装过程”,在日常操作中,相信很多人在CentOS下mysql的安装过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CentOS下mysql的安装过程”的疑惑有所...
    99+
    2023-06-16
  • centos安装mysql数据库的过程介绍
    本篇内容主要讲解“centos安装mysql数据库的过程介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“centos安装mysql数据库的过程介绍”吧!首先下载MySQL的安装文件,我这里安装...
    99+
    2023-06-10
  • Ubuntu16.04上安装MySQL(详细过程)
    Ubuntu16.04上安装MySQL(详细过程)Runningluffy 2019-08-09 20:04:29 45035 收藏 149分类专栏: 技术小白GO 文章标签: Ubuntu16 Mysql安装版权一、安装MySQL1、使用...
    99+
    2019-08-15
    Ubuntu16.04上安装MySQL(详细过程) 数据库入门 数据库基础教程 数据库 mysql
  • CentOS下mysql 卸载,安装,测试全过程
    Mysql卸载yum remove mysql mysql-server mysql-libs compat-mysql51rm -rf /var/lib/mysqlrm /etc/my.cnf查看是否还有...
    99+
    2022-10-18
  • CentOS 6.5系统最小化编译安装mysql 5.5.35的详细步骤
    下面一起来了解下CentOS 6.5系统最小化编译安装mysql 5.5.35的详细步骤,相信大家看完肯定会受益匪浅,文字在精不在多,希望CentOS 6.5系统最小化编译安装mysql 5.5.35的详细...
    99+
    2022-10-18
  • CentOS下安装配置nginx、mysql以及zabbix的过程
    这篇文章主要介绍“CentOS下安装配置nginx、mysql以及zabbix的过程”,在日常操作中,相信很多人在CentOS下安装配置nginx、mysql以及zabbix的过程问题上存在疑惑,小编查阅了...
    99+
    2022-10-19
  • CentOS系统安装的详细过程
    这篇文章主要讲解了“CentOS系统安装的详细过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS系统安装的详细过程”吧!有很多CentOS系统的安装教程,但是比较不全面或者存在着...
    99+
    2023-06-16
  • centos通过yum安装php的教程
    先给大家介绍下centos通过yum安装php 1、添加php的yum软件仓库 sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 2、安装php相关...
    99+
    2022-06-04
    centos yum安装php centos安装yum
  • CentOS 7.9 安装 docker20.10.12的过程解析
    目录一、CentOS 7.9 安装 docker-20.10.12二、环境查看三、安装软件包四、设置稳定的仓库五、安装 Docker Engine-Community六、运行dooc...
    99+
    2022-11-13
  • CentOS 6.6的安装过程由哪些
    这篇文章主要介绍“CentOS 6.6的安装过程由哪些”,在日常操作中,相信很多人在CentOS 6.6的安装过程由哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CentOS 6.6的安装过程由哪些”的疑...
    99+
    2023-06-10
  • 在CentOS 8上安装htop的教程
    如果您希望以交互方式监视系统,则htop命令应该是最佳选择之一。htop是其前身top命令的改进,它是一个交互式的进程查看器和系统监视器,它以颜色标记资源使用指标情况,并使您可以轻松地掌握系统性能。 它显示有关CPU和R...
    99+
    2022-06-04
    centos8安装htop centos8 htop
  • CentOS安装vsftp建新用户的过程
    本篇内容主要讲解“CentOS安装vsftp建新用户的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS安装vsftp建新用户的过程”吧!rpm -qa | grep vsftpd ...
    99+
    2023-06-10
  • win7下CentOS安装过程是怎样的
    本篇文章为大家展示了win7下CentOS安装过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。win7下CentOS安装步骤:1。安装win7.1)分区方案.  &nb...
    99+
    2023-06-16
  • centos编译安装mariadb的详细过程
    目录Centos编译安装mariadb1:安装cmake环境(1):进入/usr/local/download/目录(2):解压源码包(3):解压CMake源码包(4):进入cmark的源码目录(5):运行当前目录下的一...
    99+
    2022-08-29
  • CentOS 7下源码安装MySQL5.6的过程
    本篇内容介绍了“CentOS 7下源码安装MySQL5.6的过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-18
  • CentOS 6下编译安装mySQL5的过程
    本篇内容介绍了“CentOS 6下编译安装mySQL5的过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-18
  • Git在Debian和Centos下的安装过程
    本篇内容主要讲解“Git在Debian和Centos下的安装过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Git在Debian和Centos下的安装过程”吧!Debian/Ubuntu Gi...
    99+
    2023-06-04
  • CentOS rpm安装编译gcc时的过程
    本篇内容介绍了“CentOS rpm安装编译gcc时的过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CentOS是在linux开发基础上...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作