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

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

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

相关推荐

MIRIX重塑AI记忆:超Gemini 410%,节省99.9%内存,APP同步上线

MIRIX,一个由UCSD和NYU团队主导的新系统,正在重新定义AI的记忆格局。在过去的十年里,我们见证了大型语言模型席卷全球,从写作助手到代码生成器,无所不能。然而,即使最强大的模型依...

硬盘坏了怎么把数据弄出来对比10种硬盘数据恢复软件

机械硬盘或固态硬盘损坏导致数据丢失时,应立即停止对硬盘的读写操作,并根据损坏类型选择逻辑层恢复工具或专业物理恢复服务。紧急处置措施立即停止通电使用:发现硬盘异响、无法识别或数据异常时,需立即断开连接,...

蓝宝石B850A WIFI主板新玩法:内存小参调节体验

蓝宝石前段时间发布了一款性价比极高的主板:NITRO氮动B850AWIFI主板。这款主板的售价只要1349元,相比普遍1500元以上的B850主板,确实极具竞争力。虽然价格实惠,蓝宝石NITR...

内存卡损坏读不出怎么修复?这5个数据恢复工具汇总,3秒挽回!

在数字化生活的浪潮中,内存卡凭借小巧便携与大容量存储的特性,成为相机、手机、行车记录仪等设备存储数据的得力助手,承载着无数珍贵回忆与重要文件。然而,当内存卡突然损坏无法读取,无论是误删、格式化、病毒入...

内存卡修复不再难,2025年必学的6款软件工具

内存卡出现问题时,通常是因为文件系统损坏、物理损坏或病毒感染。通过专业的修复工具,我们可以尝试恢复数据并修复内存卡。内存卡修复利器:万兴恢复专家万兴恢复专家是一款功能强大的数据恢复软件,支持多种设备和...

有5款内存卡修复工具汇总,内存卡数据轻松找回!

在如今的数字时代,内存卡作为不可或缺的存储介质,广泛应用于相机、手机、行车记录仪等各类设备中,承载着我们珍贵的照片、视频以及重要文件。然而,数据丢失的风险却如影随形,误删、格式化、病毒入侵、硬件故障等...

揭秘:如何通过多种方式精准查询内存条型号及规避风险?

以下是内存条型号查询的常用方法及注意事项,综合了物理查看、软件检测、编码解析等多种方式:一、物理标签查看法1.拆机查看标签打开电脑主机/笔记本后盖找到内存条,观察标签上的型号标识。例如内存标签通常标...

内存卡数据恢复5个工具汇总推荐,轻松找回珍贵记忆!

在这个数字化时代,内存卡作为我们存储珍贵照片、重要文件的常用载体,广泛应用于手机、相机、平板电脑等设备。但数据丢失的意外却常常不期而至,误删除、格式化、病毒攻击,甚至内存卡的物理损坏,都可能让辛苦保存...

电脑内存智能监控清理,优化性能的实用软件

软件介绍Memorycleaner是一款内存清理软件。功能很强,效果很不错。Memorycleaner会在内存用量超出80%时,自动执行“裁剪进程工作集”“清理系统缓存”以及“用全部可能的方法清理...

TechPowerUp MemTest64:内存稳定性测试利器

TechPowerUpMemTest64:内存稳定性测试利器一、软件简介TechPowerUpMemTest64,由知名硬件信息工具GPU-Z的出品公司TechPowerUp发布,是一款专为64位...

微软推出AI恶意软件检测智能体Project Ire,精确度高达98%

IT之家8月6日消息,当地时间周二,微软宣布推出可自主分析恶意软件的AI检测系统原型——ProjectIre。该项目由微软研究院、Defender研究团队及Discovery&a...

农村老木匠常用的20种老工具,手艺人靠它养活一家人,你认识几种

生活中的手艺老匠人是非常受到尊敬和崇拜的,特别是在农村曾经的老匠人都是家里的“座上宾”。对于民间传统的手艺人,有一种说法就是传统的八大匠:木匠、泥匠、篾匠、铁匠、船匠、石匠、油匠和剃头匠。木匠的祖始爷...

恶意木马新变种伪装成聊天工具诱人点击

国家计算机病毒应急处理中心通过对互联网监测发现,近期出现一种恶意木马程序变种Trojan_FakeQQ.CTU。该变种通过伪装成即时聊天工具,诱使计算机用户点击运行。该变种运行后,将其自身复制到受感染...

学习网络安全 这些工具你知道吗?

工欲善其事必先利其器,在新入门网络安全的小伙伴而言。这些工具你必须要有所了解。本文我们简单说说这些网络安全工具吧!Web安全类web类工具主要是通过各种扫描工具,发现web站点存在的各种漏洞...

5分钟盗走你的隐私照片,这个全球性漏洞到底有多可怕?

这个时代,大家对电脑出现漏洞,可能已经习以为常。但如果机哥告诉大家,这个漏洞能够在5分钟内,破解并盗取你所有加密文件,而且还无法通过软件和补丁修复...这可就有点吓人啦。事情是酱婶的。来自荷兰埃因...

取消回复欢迎 发表评论: