百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

HA服务器架构-基于CentOS7

qiyuwang 2024-11-23 21:41 11 浏览 0 评论

linux文件夹含义

/bin - 重要的二进制 (binary) 应用程序
/boot - 启动 (boot) 配置文件
/dev - 设备 (device) 文件
/etc - 配置文件、启动脚本等 (etc)
/home - 本地用户主 (home) 目录
/lib - 系统库 (libraries) 文件
/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统
/media - 挂载可移动介质 (media),诸如 CD、数码相机等
/mnt - 挂载 (mounted) 文件系统
/opt - 提供一个供可选的 (optional) 应用程序安装目录
/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息
/root - root (root) 用户主文件夹,读作“slash-root”
/sbin - 重要的系统二进制 (system binaries) 文件
/sys - 系统 (system) 文件
/tmp - 临时(temporary)文件
/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
/var - 经常变化的(variable)文件,诸如日志或数据库等

centos7防火墙操作

  1. 永久打开一个80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent 
firewall-cmd --reload

  1. 启动一个服务:
systemctl start firewalld.service
  1. 关闭一个服务:
systemctl stop firewalld.service
  1. 重启一个服务:
systemctl restart firewalld.service
  1. 显示一个服务的状态:
systemctl status firewalld.service
  1. 在开机时启用一个服务:
systemctl enable firewalld.service
  1. 在开机时禁用一个服务:
systemctl disable firewalld.service
  1. 查看服务是否开机启动:
systemctl is-enabled firewalld.service
  1. 查看已启动的服务列表:
systemctl list-unit-files|grep enabled
  1. 查看启动失败的服务列表:
systemctl --failed

keeplieved

keeplieved的简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

keepalievd安装

Keepalived:192.168.3.206 HA1
Keepalived:192.168.3.207 HA2
  1. 关闭selinux
### 查看
[root@dev-server ~]# getenforce
Disabled
[root@dev-server ~]# /usr/sbin/sestatus -v
SELinux status:                 disabled

### 临时关闭
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

###永久关闭
vim /etc/selinux/config

###SELINUX=enforcing改为SELINUX=disabled 

  1. 下载或者上传 压缩包 wget http://www.keepalived.org/software/keepalived-1.3.9.tar.gz
  2. 解压 &编译
tar -xzvf keepalived-1.3.9.tar.gz
#编译
cd keepalived-1.3.9/
./configure 
 make 
 make install
  1. 修改Master主机配置

vim /usr/local/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     heyapenggz@163.com #管理员邮箱列表
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id HA1 #主机名
}

vrrp_instance VI_1 {
    state MASTER #角色
    interface ens33 #网卡编号
    virtual_router_id 51
    priority 100 #权重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.210/24 #VIP
    }
}
  1. 修改BACKUP主机配置 vim /usr/local/etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     heyapenggz@163.com
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id NodeB
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.140/24
    }
}  

  1. 设置开机启动 Centos6
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived 
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
mkdir -p /etc/keepalived 
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf 
chmod +x /etc/init.d/keepalived 
chkconfig –add keepalived 
chkconfig keepalived on

Centos 7

mkdir -p /etc/keepalived/
cp  /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

systemctl enable keepalived.service

常见问题

  1. OpenSSL is not properly installed on your system.
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!

解决办法:

    yum -y install openssl-devel
  1. error: no acceptable C compiler found in $PATH
error: no acceptable C compiler found in $PATH

解决办法:

yum install gcc

Mysql双主双复制集群

mysql安装

1.删除系统自带数据库

yum remove mariadb*

  1. 安装mysql5.6
rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm
  1. 设置开机启动 并启动mysql
chkconfig mysql on

service mysql start
  1. 登录root账户并修改root密码
cat /root/.mysql_secret

mysql -u root -p
set password =PASSWORD('eshu2017');

  1. 配置共同账户
CREATE USER 'ha'@'%' IDENTIFIED BY 'eshu2017'; 
GRANT ALL ON *.* TO 'ha'@'%'; 
flush privileges;

  1. 配置HA1主服务器
server-id = 1
log-bin=mysql-bin 
binlog-do-db = ha
binlog-ignore-db = mysql
#主-主形式需要多添加的部分
log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = ha
replicate-ignore-db = mysql,information_schema
  1. 配置HA2主服务器
server-id = 2
log-bin=mysql-bin 
replicate-do-db = ha
replicate-ignore-db = mysql,information_schema,performance_schema
      
#主-主形式需要多添加的部分
binlog-do-db = ha
binlog-ignore-db = mysql
log-slave-updates
sync_binlog = 1
auto_increment_offset = 2
auto_increment_increment = 2

8.重启两台服务器 并配置复制账户

  • 修改HOSTS
vim /etc/hosts

  • 在HA1 mysql上运行
grant replication slave on *.* to 'replicate'@'HA2' identified by 'eshu2017';

  • 在HA2 mysql上运行
grant replication slave on *.* to 'replicate'@'HA1' identified by 'eshu2017';

  • 配置复制(分别配置为另一台服务器的slave)
show master status;  #记录下来file   Position 两个值供子节点的 master_log_file =  master_log_pos= 使用

stop SLAVE       
change  master to master_host='192.168.3.207',master_user='ha',master_password='eshu2017',master_log_file='mysql-bin.000001',master_log_pos=817;  
start slave

fastDFS

下载

包含两部分 一部分为lib 一部分为fastDFS

https://github.com/happyfish100/libfastcommon/releases

	
https://github.com/happyfish100/fastdfs/releases

安装

  1. 安装lib
tar xf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install

  1. 安装fastDFS
tar xf fastdfs-5.09.tar.gz
cd fastdfs-5.09
./make.sh
./make.sh install

3.配置

  • 配置文件路径
cd /etc/fdfs
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

  • tracker节点配置 tracker.conf
#绑定IP
bind_addr=
#端口
port=22122
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_tracker
#上传文件时选择group的方法
#0:轮询,1:指定组,2:选择剩余空间最大
store_lookup=2
#如果上面的配置是1,那么这里必须指定组名
store_group=group2
#上传文件时选择server的方法
#0:轮询,1:按IP地址排序,2:通过权重排序
store_server=0
#storage上预留空间
reserved_storage_space = 10%

  • storage节点 storage.conf
#storage server所属组名
group_name=group1
#绑定IP
bind_addr=
#storage server的端口
port=23000
#连接超时时间
connect_timeout=30
#日志数据路径
base_path=/data/fdfs_storage/base
#storage path的个数
store_path_count=2
#根据store_path_count的值,就要有storage0到storage(N-1)个
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122


  • 创建文件夹
mkdir -p /data/fdfs_storage/base
mkdir -p /data/fdfs_storage/storage0
mkdir -p /data/fdfs_storage/storage1
mkdir -p /data/client

  • 打开防火墙端口
firewall-cmd --zone=public --add-port=22122/tcp --permanent 
firewall-cmd --zone=public --add-port=23000/tcp --permanent 

  • 配置客户端
cd /etc/fdfs
cp client.conf.sample client.conf
vi client.conf
#存放日志目录
base_path=/data/client
#跟踪服务器
tracker_server=192.168.1.222:22122
tracker_server=192.168.1.233:22122

启动服务并设置开机启动

systemctl start fdfs_trackerd.service
systemctl start fdfs_storaged.service

systemctl enable fdfs_storaged.service
systemctl enable fdfs_trackerd.service

测试

  1. 文件上传
echo "12345678" >> /data/1.txt
fdfs_upload_file /etc/fdfs/client.conf /data/1.txt
  1. 文件下载
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
  1. 追加
echo "hello" >> /data/2.txt
fdfs_upload_appender /etc/fdfs/client.conf /data/1.txt
fdfs_append_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3bxCEAcqhAAAAAIk0NhY869.txt /data/2.txt

  1. 删除
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt

  1. 查看文件信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
  1. 查看集群
fdfs_monitor /etc/fdfs/client.conf

  1. 常用命令
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file



两台服务器,各启动三个实例,形成三主三从

实验机器IP: 192.168.3.206 192.168.3.207

系统环境:centos 7

1、安装所需环境和工具

yum -y install wget vim tcl gcc make

2、下载redis 压缩包并解压

cd /usr/local/
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf redis-4.0.1.tar.gz

3、编译redis源文件

cd redis-4.0.1
make & make install

# 测试:make test

(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从 /usr/local/redis-4.0.1/src/ 中拷贝过去,命令:cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)

4、配置内核参数

配置 vm.overcommit_memory 为1,这可以避免数据被截断

sysctl -w vm.overcommit_memory=1

5、创建多实例的文件夹,用来存放不同实例的配置文件

cd /usr/local/
mkdir cluster
cd cluster
mkdir 7000 7001 7002

6、修改配置文件

vim /usr/local/redis-4.0.1/redis.conf

bind 192.168.2.247(需要不同服务器的节点连通,就不能设置为 127.0.0.1)
protected-mode no(需要不同服务器的节点连通,这个就要设置为 no)
daemonize yes(设置后台运行redis)
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes

# 根据不同端口需要设置的地方
port 7000
pidfile /var/run/redis_7000.pid
logfile /var/log/redis/redis_7000.log
dbfilename dump_7000.rdb
appendfilename "appendonly_7000.aof"
cluster-config-file nodes_7000.conf

7、复制配置文件到各个实例文件夹,并修改相应端口号和参数

cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7000/
cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7001/
cp -f /soft/redis-4.0.1/redis.conf /usr/local/cluster/7002/

mkdir /var/log/redis/

8、启动各个实例

cd /usr/local/redis-4.0.1/src/
./redis-server /usr/local/cluster/7000/redis.conf &
./redis-server /usr/local/cluster/7001/redis.conf &
./redis-server /usr/local/cluster/7002/redis.conf &

使用 ps -ef|grep redis 查看是否都启动成功,IP和端口号都正确

9、防火墙开通端口号策略(这里用centos7默认的firewall-cmd)

firewall-cmd --zone=public --add-port=7000-7002/tcp --permanent
firewall-cmd --zone=public --add-port=17000-17002/tcp

--permanent(必须开集群总线端口,集群总线端口=端口号+10000,例:7000的集群总线端口是17000。这个集群总线端口不开放,集群的时候外部服务器的节点添加不进来)

firewall-cmd --reload

#彻底关闭防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service

================================================================================== ====================== 1~9都是要在两台服务器中操作的 =========================== ==================================================================================

10、测试两台服务器是否都能 telnet 得通另一台的 7000~7002 和 17000~17002

yum isntall telnet -y

telnet 192.168.3.206 7000

11、安装 ruby 环境

yum -y install ruby rubygems

12、更新gem源,国外的会被墙,所以换一个国内的

gem sources --remove https://rubygems.org/ --remove https://ruby.taobao.org/ -a https://gems.ruby-china.org
gem source -l

gem cleanup
gem list

13、使用gem安装 redis和 ruby接口

gem install redis (或 gem install redis --version 4.0.1)

14、创建集群


cd /usr/local/redis-4.0.1/src/
./redis-trib.rb create --replicas 1 192.168.3.206:7000  192.168.3.206:7001 192.168.3.206:7002 192.168.3.207:7000  192.168.3.207:7001 192.168.3.207:7002
  • 留意屏幕,会有一句(type 'yes' to accept),输入 yes ,回车,就是接受自动分配的三主三从 如果最后出现
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

说明成功了。

如果是出现 Waiting for the cluster to join........... 一直有 “.”出现,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,那么恭喜你,要悲剧了.....

15、验证集群节点数

cd /usr/local/redis-4.0.1/src/
./redis-cli -h 192.168.2.247 -c -p 7000

CLUSTER NOTES

设置密码

如果集群要设置密码,集群启动后要在各个节点下设置:

config set masterauth abc
config set requirepass abc
config rewrite

16、常见问题

redis requires Ruby version >= 2.2.2






gem install redis

其中 gem install redis命令执行时出现了:

 redis requires Ruby version >= 2.2.2的报错,查了资料发现是Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2

解决办法是 先安装rvm,再把ruby版本提升至2.3.3

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
    curl -L get.rvm.io | bash -s stable
    find / -name rvm -print
    
    
    
    source /usr/local/rvm/scripts/rvm
    
      rvm list known
      
      rvm install 2.3.3
      rvm use 2.3.3
      rvm use 2.3.3 --default
      rvm remove 2.0.0
      ruby --version
 

snmp安装

snmp简介

snmp安装

yum install -y net-snmp

yum install -y net-snmp-devel

yum install -y net-snmp-libs



配置

  1. 修改配置文件

/etc/snmp/snmpd.conf/etc/snmp/snmpd.conf

  1. 配置防火墙
firewall-cmd --zone=public --add-port=161/udp --permanent

  1. 配置开机启动

nginx 及 FastDfs-nginx-modle

安装

分别解压两个文件包

tar -xzvf nginx-1.12.2.tar.gz 
tar -xzvf fastdfs-nginx-module_v1.16.tar.gz 


修改

vim /home/data/bin/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
#去掉local

编译


cd  nginx-1.12.2/
./configure --add-module=../fastdfs-nginx-module/src
make 
make install

配置插件

cd /home/data/bin/fastdfs-nginx-module/src vim mod_fastdfs.conf

tracker_server=192.168.3.206:22122
url_have_group_name = true

store_path_count=2
store_path0=/data/fdfs_storage/storage0
store_path1=/data/fdfs_storage/storage1


复制fastdfs文件

cp mod_fastdfs.conf /etc/fdfs

cd /home/data/bin/fastdfs-5.11/conf
cp anti-steal.jpg http.conf mime.types /etc/fdfs/

配置nginx

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

在web中增加配置

location /group1/M00 {
    ngx_fastdfs_module;
}



启动

/usr/local/nginx/sbin/nginx

注意

在已经安装过 Nginx 的服务器上安装配置 fastdfs-nginx-module 模块?我们直接进入 Nginx 的存放目录,进行配置后编译,就不需要执行最后安装make install这一步了,接着重启就行了。

相关推荐

第二十六章 Bat文件(bat文件百科)

第二十六章Bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下输入批处理文件的名称,或者双击该批处理...

自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏

引言FFMpeg是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。但也拦不住,FFMpeg本身是命令行程序,可编写脚本,借助Bash轻松快速地构建自动化程序。...

批处理:创建和删除文件夹命令(批处理命令 删除文件夹)

上一期,我们学习了文件夹的查看命令:tree和dir,以及文件夹切换命令:cd,今天,我继续给大家讲解下批处理的目录(文件夹)操作命令:创建和删除。一.md:创建目录(文件夹)可以在当前文件夹下创建...

利用VBA创建新的工作簿(vba 创建工作簿)

【分享成果,随喜正能量】我告诫自己:你的话说得太多,你听别人倾诉得太多,你咖啡喝得太多,你在陌生的房间里坐的时间太长,你的睡眠质量太差,你醒着的时间太长,你平庸的事想得太多,你希望过多,你安慰自己太频...

实用小工具,注册表文件快速转换.bat文件

关于注册表注册表是Windows操作系统中的一个核心数据库,它用于存储系统和应用程序的设置信息。这个数据库文件控制着Windows操作系统的外观和如何响应外来事件的工作方式。注册表包含了各种参数,直接...

如何给自己的电脑做一个截图工具?现场教会你具体流程和步骤

做自媒体,经常要用到一些图片,有时候图片上有水印去不掉,这时候要是有一个能随意截图的工具该有多少呀!今天教授让大家自己设计一个截图工具。下面就是流程和步骤:1、在电脑页面的任意位置,点击鼠标右键,新建...

Windows使用批处理文件更改目录下的文件名(含序号)

从网上下载的图片,默认的名字是由许多字母和数字组成的比较长的一个字符串,不便于人记忆,使用起来比较麻烦。如下图所示:本文的目的是写一个批处理文件,将该目录中的所有扩展名为jpeg的文件改名为日期加序号...

学习VB编程第35天,如何调用bat批处理

今天学习了刘金玉老师零基础VB教程的第43期,学习的主要内容是如何调用bat批处理登录。一、什么是批处理1.什么是命令提示符(cmd)?在Windows开始菜单运行(windows+r键也可调出)中输...

利用bat让文件在指定时间自动进行备份

在很多时候,我们需要备份电脑中的一些文件,特别是企业服务器的备份,可能是有一些文件每天都会有更新,或者定期更新,而文件又是相对比较重要的,需要我们定时去备份。可有时候文件比较大,备份时间比较长,或者在...

BAT 批处理脚本教程(批处理脚本编写教程)

BAT批处理脚本教程第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处...

Windows系统bat批处理常用命令(一)

一、批处理中常用的命令:@命令:加在每个命令行的最前面,表示运行时不显示这一行的命令行。eg:@echooff//不显示后续命令行及当前命令行...

编写bat文件在windows上自动执行cmd命令

windows电脑上直接新建txt记事本文件,编写好要执行的命令后,将后缀修改成.bat,然后直接点击文件就可以执行里面的命令了#打开命令窗口startcmd#/k执行完命令不关...

不会C语言写bat脚本代码批量修改文件名,DeepSeek帮你解决!

哈喽大家好,我是小飞。今天给大家讲一下DeepSeek做了一个批量修改文件夹的bat脚本。·首先先让它这样修改一下,因为之前已经做过一个,然后它没有改,现在让它修改一下,把它修改一个很智能的BAT脚本...

BAT批处理命令之ren/rename(与Excel合作批量修改文件名)

写在前面一鸽就是半年...

使用批处理文件——autoexec.bat(批处理more)

1、dblspace.sys磁盘压缩。  drvspace.sys、dblspace和drvspace是Microsoft公司推出的磁盘压缩工具,可以将磁盘的空间增加许多,但由于它依靠对文件进行压...

取消回复欢迎 发表评论: