HA服务器架构基于CentOS7
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防火墙操作永久打开一个80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload 启动一个服务: systemctl start firewalld.service 关闭一个服务: systemctl stop firewalld.service 重启一个服务: systemctl restart firewalld.service 显示一个服务的状态: systemctl status firewalld.service 在开机时启用一个服务: systemctl enable firewalld.service 在开机时禁用一个服务: systemctl disable firewalld.service 查看服务是否开机启动: systemctl is-enabled firewalld.service 查看已启动的服务列表: systemctl list-unit-files|grep enabled 查看启动失败的服务列表: systemctl --failed keeplievedkeeplieved的简介
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器 keepalievd安装Keepalived:192.168.3.206 HA1 Keepalived:192.168.3.207 HA2关闭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 下载或者上传 压缩包 wget http://www.keepalived.org/software/keepalived-1.3.9.tar.gz 解压 &编译 tar -xzvf keepalived-1.3.9.tar.gz #编译 cd keepalived-1.3.9/ ./configure make make install 修改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 } } 修改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 } } 设置开机启动 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 常见问题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 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* 安装mysql5.6 rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm 设置开机启动 并启动mysql chkconfig mysql on service mysql start 登录root账户并修改root密码 cat /root/.mysql_secret mysql -u root -p set password =PASSWORD("eshu2017"); 配置共同账户 CREATE USER "ha"@"%" IDENTIFIED BY "eshu2017"; GRANT ALL ON *.* TO "ha"@"%"; flush privileges; 配置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 配置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 安装安装lib tar xf libfastcommon-1.0.7.tar.gz cd libfastcommon-1.0.7 ./make.sh ./make.sh install 安装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 测试文件上传 echo "12345678" >> /data/1.txt fdfs_upload_file /etc/fdfs/client.conf /data/1.txt 文件下载 fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt 追加 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 删除 fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt 查看文件信息 fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt 查看集群 fdfs_monitor /etc/fdfs/client.conf 常用命令 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~17002yum 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 配置修改配置文件
/etc/snmp/snmpd.conf/etc/snmp/snmpd.conf 配置防火墙 firewall-cmd --zone=public --add-port=161/udp --permanent 配置开机启动 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这一步了,接着重启就行了。
人工智能与动物对话机器学习算法可以窃听动物语言吗?乌干达的这些黑猩猩可以像2岁的孩子一样学习理解人类语言圈养的黑猩猩懂英语,和2岁的孩子一样,并使用人类手语的符号。海豚共同协调他们的动作来打开容器并
把国产车卖到80万,对标ModelX,详解高合HiPhiX的三电系统在传统燃油车领域,中国汽车起步较晚,所以在品牌技术工业体系等方面,自主品牌车型与国外车型的差距一直都是存在的。不过,随着智能化电动化技术的发展,这种状况在新能源市场得到了较明显的改
一文读懂地球科学引擎PIEEngine让遥感腾云驾雾导语PIEEngine地球科学引擎是航天宏图自主研发的一套基于容器云技术构建的面向地球科学领域的专业PaaSSaaS云计算服务平台,基于自动管理的弹性大数据环境,多源遥感数据处理分
东数西算之计算机设备篇我们之前讲了一下东数西算受益的行业,其中受益最直接和最广泛的肯定是数据中心设备提供商和软件服务商。所以我们今天来看看计算机设备行业的公司,哪些是跟东数西算有关系的,哪些关系不大。然
俄罗斯希望在监狱中招募IT专家对乌克兰的袭击导致俄罗斯前所未有的人才流失数以万计的电子和IT行业的科学家和工程师外流。为了保持俄罗斯高科技经济的运转,目前正在考虑采取严厉措施在俄罗斯监狱中,将在IT领域被判处劳
美斥资促进电动车电池生产据路透社5月2日报道,美国官员2日说,拜登政府将划拨超过30亿美元基础设施资金,用于资助电动汽车动力电池制造。这笔资金将由能源部从拜登总统去年签署的一万亿美元基础设施法案中划拨。能
win11大更新,新功能也太骚了吧话说,最近Win11还挺活跃的,印象中似乎一直在更新,果然,Windows在更新频率上从不会让我们失望不过嘛,虽然每次更新可能会给我们带来一些或大或小的bug,但是也会有一些新功能
零售百货生鲜配送扩张医疗健康大发展为了可以正常的长期分享,我还是保持只总结一些比较简洁的内容,分享实属不易希望大家点点关注点点赞。内容有好有普通主要就是要持续观看,我会长期分享,给大家带来一定的帮助。从短期来看,考
CORS跨域资源共享CrossOriginResourceSharing一CORS是如何工作的?基于Web的资源共享涉及到两个基本的角色,即资源的提供者和消费者。针对我们前面演示的应用场景,即显示在浏览器中的某个Web页面通过调用WebAPI的方式来获
毕业季就业季放眼量为什么数字经济将成为提升大学生就业质量的重要途径?央广网北京5月4日消息(记者唐婧)据中央广播电视总台经济之声天下财经报道,经济之声特别报道毕业季就业季,本期推出第四篇放眼量为什么数字经济将成为提升大学生就业质量的重要途径?今年春
汽车行业鏖战2022之4月篇汽车行业的竞争激烈程度,已经到了月初比销量和新交付量的关键时间段,随着5月到来,汽车行业,特别是新能源汽车行业的新造车势力,都陆续发布了自身的销售量和交付量,以及累计交付量。从数据