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

HA服务器架构-基于CentOS7(服务器halting)

cac55 2024-10-07 06:38 33 浏览 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这一步了,接着重启就行了。

相关推荐

如何屏蔽色情网站?_怎么能屏蔽网站

一、基础防御:全网DNS劫持阻断1.修改全网DNS服务器推荐DNS:安全DNS:CleanBrowsing(成人内容过滤):185.228.168.168/185.228.169.168Open...

容器、Pod、虚拟机与宿主机网络通信全解:看这一篇就够了

在日常开发与部署过程中,很多人一开始都会有这样的疑惑:容器之间是怎么通信的?容器怎么访问宿主机?宿主机又如何访问容器?Kubernetes中Pod的网络和Docker容器一样吗?容器跨机器是...

Win11专业版找不到共享打印机的问题

有很多深度官网的用户,都是在办公室上班的。而上班就需要使用打印机,但更新win11系统后,却出现同一个办公室里面的打印机都找不到的问题,这该如何处理呢?其实,可能是由于我们并没有打开共享打印机而造成的...

常用电脑快捷键大全,摆脱鼠标依赖,建议收藏

Ctrl+C复制Ctrl+X剪切Ctrl+V粘贴Ctrl+Z撤销Ctrl+Y重做Ctrl+B加粗Ctrl+A全选所有文件Ctrl+S保存Ctrl+N新建Ctrl+O打开Ctrl+E...

Win11实现自动追剧Jellyfin硬解,免NAS复杂操作

大家好,欢迎来到思赞数码。本期将详细介绍如何通过安装和配置Sonarr、Radarr、Prowlarr、qBittorrent和Jellyfin,打造一套自动化的影视管理系统。很多人认为,要实现自动追...

微软Win11安卓子系统WSA 2308.40000.3.0更新推送下载

IT之家9月21日消息,微软官方博客今日宣布,已面向所有WindowsInsider用户推送了Windows11安卓子系统的2308.40000.3.0版本更新。本次更新和之前...

路由器总掉线 一个命令就能猜出八九分

明明网络强度满格或有线图标正常,但视频卡成PPT、网页刷不开、游戏动不了,闲心这些问题很多小伙伴都碰到过。每次都要开关路由、宽带/光猫、插拔网线……一通忙。有没有啥办法能快速确定故障到底在哪儿,方便处...

windows电脑如何修改hosts文件?_windows怎么修改hosts

先来简单说下电脑host的作用hosts文件的作用:hosts文件是一个用于储存计算机网络中各节点信息的计算机文件;作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中...

win10广告弹窗ShellExperienceHost.exe

win10右下角老是弹出广告弹窗,排查为以下程序引起,但是这个是系统菜单的程序不能动:C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\S...

Win10 Mobile预览版10512/10166越狱解锁部署已被黑客攻破

看起来统一的WindowsPhone和Windows越加吸引人们的关注,特别是黑客们的好奇心。XDA论坛宣称,在Win10Mobile预览版10512/10166上,已取得越狱/解锁部署突破,比如可...

6款冷门小众软件,都是宝藏,建议收藏

真的很不错(。-ω-)zzzBearhttps://bear.app/cn/Bear是一个漂亮,灵活的Markdown的写作工具。它一样只支持苹果家的全平台。它一出现就惊艳四方,就被AppSto...

如何让不符合条件的设备升级Windows 11

如果你是最近(6月24日之后)加入WindowsInsider项目并且你的设备并不符合升级条件,那么当你在尝试升级Windows11的时候可能会看到以下错误:你的PC不符合Wi...

windows host文件怎么恢复?局域网访问全靠这些!

windowshost文件怎么恢复?windowshost文件是常用网址域名及其相应IP地址建立一个关联文件,通过这个host文件配置域名和IP的映射关系,以提高域名解析的速度,方便局域网用户使用...

Mac Hosts管理工具---SwitchHosts

switchhosts!formac是一款帮助用户快速切换hosts文件的工具,switchhosts!formac能够帮助你快速方便的打造个人专用的网络环境,支持本地和在线两种方式,并且支持...

「浅谈趣说网络知识」 第十二弹 老而不死的Hosts,它还很有用

【浅谈趣说网络知识】第十二弹老而不死的Hosts,它还很有用什么时候才觉得自己真的老了,不是35岁以上的数字,不是头上的点点白发,而是不知觉中的怀旧。风口上的IT界讲的就是"长江后浪推前浪...

取消回复欢迎 发表评论: