私有云盘:lamp部署nextcloud+高可用集群
目录
一、实验准备:
二、配置mariadb主从复制
三台主机下载mariadb
1)主的操作
2)从的操作
3)测试数据是否同步
三、配置nfs让web服务挂载
1、安装
2、配置nfs服务器
3、配置web服务的httpd
4、测试
四、web 服务器 配置 lamp
1、配置php环境
2、配置访问测试界面
3、修改httpd配置文件
4、访问web页面测试
5、在nfs服务器上配置nextcloud页面
五、配置nginx反向代理&&haproxy&&keepalived
1、安装nginx
2、配置两台nginx 的反向代理
3、为NGINX配置haporxy
4、配置keepalived
一、实验准备:
192.168.150.102 :配置nginx反向代理,haproxy+keepalive提高高可用(主)
192.168.150.103 :配置nginx反向代理,haproxy+keepalived提高高可用(副)
192.168.150.104 :web1 配置lamp平台
192.168.150.105 :web2 配置lamp平台
192.168.150.106 :nfs共享文件服务
192.168.150.107 :mysql-master
192.168.150.108 :mysql-slave1
192.168.150.109 :mysql -slave2
192.168.150.110 :客户端
所有主机设置防火墙、selinux
本次nextcloud版本22-2.0 、php74
二、配置mariadb主从复制
192.168.1.7 主
192.168.1.8 从
192.168.1.9 从
三台主机下载mariadb
yum -y install mariadb-server
1)主的操作
vim /etc/my.cnfserver-id=1log-bin=mysql-binlog-slave-updates=turecharacter-set-server=utf8binlog-format = mixed

systemctl start mariadb
netstat -anput |grep 3306

初始化数据库
mysql_secure_installation
创建hy用户
grant replication slave on *.* to 'hy'@'192.168.150.%' identified by '123456';(用于远程登录数据库)
show master status;

2)从的操作
2)从的操作
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=2 #另一个从改为3
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
character-set-server=utf8
binlog-format = mixed
重置数据库
systemctl start mariadb
mysql_secure_installation
mysql -u root -p"123.com"
设置授权
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.150.107',MASTER_USER='hy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1484;
start slave;
show slave status\G;


3)测试数据是否同步
在主上为nextcloud创建库,并创建用于登录的用户
create database nextcloud;
grant all on nextcloud.* to "nextcloud"@"192.168.150.%" identfied by "123456"
select user,host,password from mysql.user;


在从上验证是否同步,以及用户nextcloud是否可以远程登录

验证用户nextcloud
mysql -unextcloud -p"123456" -h 192.168.150.107 -P 3306

三、配置nfs让web服务挂载
192.168.150.6 nfs服务器
192.168.150.5 web服务器
192.168.150.4 web服务器
1、安装
安装yum -y install rpcbind 、yum -y install nfs-utils
先启动nfs,在启动rpcbind(如果操作过程中报错,把这两个服务停掉,然后按照顺序启动)
2、配置nfs服务器
mkdir /share ##创建共享目录
vim /etc/exports
/share 192.168.150.0/24(rw,sync,no_root_squash)
启动
systemctl enable --now nfs
systemctl enable --now rpcbind
查看可用的共享目录
exportfs
showmount -e

3、配置web服务的httpd
yum -y install httpd
systemctl enable --now httpd
挂载共享目录
yum -y install nfs-utils
yum -y install rpcbind
systemctl enable --now nfs
showmount -e 192.168.150.106
mount 192.168.150.106:/share /var/www/html/

4、测试
来到nfs服务器配置网页
echo this is a test > /share/index.html
访问

四、web 服务器 配置 lamp
192.168.1.4 web服务器
192.168.1.5 web服务器
1、配置php环境
yum install epel-release -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
yum install yum-utils -y
yum-config-manager --enable remi-php74
yum -y install php php-xml php-gd php-mbstring php-process php-ldap php-xml php-zip php-mysql php-intl
php -v #查看版本

2、配置访问测试界面
vim index.html
mv index.html index.php
cat index.php

3、修改httpd配置文件
vim /etc/httpd/conf/httpd.conf<Directory "/var/www/html/nextcloud">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>

4、访问web页面测试
此时的php环境没什么问题了

5、在nfs服务器上配置nextcloud页面
下载(比较慢)
wget https://download.nextcloud.com/server/releases/nextcloud-22.2.0.zip
yum -y install unzip

unzip nextcloud-22.2.0.zip
cp nextcloud /share/ -R
useradd -s /sbin/nologin -M apache
chown apache.apache /share
chmod 777 /share
回到web服务器修改默认的访问页面
vim /etc/httpd/conf/httpd.confDocumentRoot "/var/www/html/nextcloud"

重启
systemctl restart httpd
访问http://192.168.150.104 和 http://192.168.150.105



192.168.150.104报错

解决办法vim /var/www/html/nextcloud/config/config.php

解决现在2个web服务器都可以登录了

五、配置nginx反向代理&&haproxy&&keepalived
192.168.150.102
192.168.150.103
1、安装nginx
yum -y install epel-release.noarch
yum -y install nginx
systemctl enable --now nginx
2、配置两台nginx 的反向代理
vim /etc/nginx/nginx.conf在http字段下插入upstream nextcloud {ip_hash;server 192.168.150.104:80;server 192.168.150.105:80;
}server {listen 80;server_name nextcloud1;location / {proxy_pass http://192.168.150.104;}
}server {listen 80;server_name nextcloud2;location / {proxy_pass http://192.168.150.105;}
}
检查配置文件
nginx -t
重载配置文件
systemctl reload nginx
访问测试192.168.150.102

访问测试192.168.150.103

3、为NGINX配置haporxy
1)安装
##下载HAproxy
wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz
##解压
tar -xf haproxy-1.7.2.tar.gz
##进入目录
cd haproxy-1.7.2/
##编译(没有gcc请先安装)
make PREFIX=/usr/local/haproxy TARGET=linux2628
make install PREFIX=/usr/local/haproxy
2)配置haproxy
从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径“/etc/haproxy/haproxy.cfg”mkdir /etc/haproxytouch /etc/haproxy/haproxy.cfg
vim /etc/haproxy/haproxy.cfg##插入
global #全局属性daemon #以daemon方式在后台运行maxconn 256 #最大同时256连接pidfile /home/ha/haproxy/conf/haproxy.pid #指定保存HAProxy进程号的文件defaults #默认参数mode http #http模式timeout connect 5000ms #连接server端超时5stimeout client 50000ms #客户端响应超时50stimeout server 50000ms #server端响应超时50sfrontend http-in #前端服务http-inbind *:88 #监听88端口(不修改会与nginx冲突)default_backend Nginxservers #请求转发至名为"servers"的后端服务backend Nginxservers #后端服务serversserver server1 192.168.150.102:80 maxconn 32 #backend servers中只有一个后端服务,名字叫server1,起在本机的80端口,HAProxy同时最多向这个服务发起32个连接
server server2 192.168.150.103:80 maxconn 32 #backend servers中只有一个后端服务,名字叫server2,起在本机的80端口,HAProxy同时最多向这个服务发起32个连接
将haproxy添加为系统服务
cp /root/haproxy-1.7.2/examples/haproxy.init /etc/init.d/haproxy
vim /etc/init.d/haproxy
修改: 35行 内容为 BIN=/usr/local/haproxy/sbin/$BASENAME
chmod +x /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
##添加3和5运行级别下自启动
chkconfig haproxy --level 35 on
chkconfig --list service haproxy start
验证haproxy


4、配置keepalived
192.168.150.102(主)
192.168.150.103 (副)
##安装keepalived
yum -y install keepalived
##加载查看模块
modprobe ip_vs
lsmod |grep ip_vs
###配置
vim /etc/keepalived/keepalived.conf
##插入
global_defs {router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {script "killall -0 haproxy" #使用killall -0检查haproxy实例是否存在,性能高于ps命令interval 2 #脚本运行周期weight 2 #每次检查的加权权重值
}
vrrp_instance HA_1 {state MASTER #副的写SLAVEinterface ens160virtual_router_id 51priority 100 #从的到比100低advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.150.200}track_script {chk_haproxy #对应的健康检查配置}
}
启动keepalived+haproxy
systemctl restart keepalived.serviceservice haproxy restart
查看主的ip

查看从的ip

浏览器访问192.168.150.200

验证:宕掉192.168.150.102观察192.168.150.103的VIP


继续访问192.168.150.200

配置完成,实验结束(nfs换成ceph存储会更好些)
相关文章:
私有云盘:lamp部署nextcloud+高可用集群
目录 一、实验准备: 二、配置mariadb主从复制 三台主机下载mariadb 1)主的操作 2)从的操作 3)测试数据是否同步 三、配置nfs让web服务挂载 1、安装 2、配置nfs服务器 3、配置web服务的httpd 4、测试 四、web 服务器 配…...
在线制作课程表
失业在家,开启一天一个应用的创作节奏,最近学了uniapp,特别想做点啥,正好家里小孩子要打印课程表,而且课程表还有调课的需求,就寻思做一个方便大家,到目前位置服务完全免费的,新鲜上…...
聊聊分布式架构06——[NIO入门]简单的Netty NIO示例
目录 Java NIO和Netty NIO比较 Java NIO: Netty: Netty NIO中的主要模块 Transport(传输层) Buffer(缓冲区) Codec(编解码器) Handler(处理器) Even…...
H5逆向之远程RPC
引言前一讲说过H5 怎么去抓包,逆向分析。其中说到RPC。这一节详细讲一下。有一种情况,JS 比较复杂,混淆的厉害。 这个时候就用到RPC。原理就是,hook web 浏览器,直接调用js 里边的方法。 Node 服务。为什么用到Node 服务,先来看下这架构 Node 对外提供各种接口,外部可以…...
解决Ubuntu18.04安装好搜狗输入法后无法打出中文的问题
首先下载安装 搜狗拼音输入法 ,下载选择: x86_64 在ubuntu中设置 fcitx 最后发现安装好了,图标有了 ,但是使用时不能输入中文,使用下面的命令解决: sudo apt install libqt5qml5 libqt5quick5 libqt5qu…...
Ubuntu LabelMe AI 识别
1.创建虚拟环境 conda create -n labelme python3.9 2.激活虚拟环境 conda activate labelme 3.安装labelme pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple pip install labelme -i ht…...
基于FPGA的图像缩小算法实现,包括tb测试文件和MATLAB辅助验证
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的处理结果导出到matlab中显示图像效果: 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1p…...
黑马店评-04缓存更新策略,保证MySQL数据库中的数据和Redis中缓存的数据一致性
缓存更新策略(数据一致) 更新策略 缓存更新是Redis为了节约内存而设计出来的机制,当我们向Redis插入太多数据时就会导致缓存中的数据过多,所以Redis会对部分数据进行更新即淘汰 低一致性需求(数据长久不发生变化): 使用内存淘汰机制,例如店铺类型信息的查询缓存,因为这部分…...
matlab相机标定实验
实验原理 1. 相机标定坐标系 相机的参数对目标的识别、定位精度有很大的影响,相机标定就是为了求出相机的内外参数。标定中有3个不同层次的坐标系:世界坐标系、相机坐标系和图像坐标系(图像物理坐标系和图像像素坐标系)。世界坐…...
【每日一题Day343】LC2731移动机器人 | 脑筋急转弯+数学
移动机器人【LC2731】 有一些机器人分布在一条无限长的数轴上,他们初始坐标用一个下标从 0 开始的整数数组 nums 表示。当你给机器人下达命令时,它们以每秒钟一单位的速度开始移动。 给你一个字符串 s ,每个字符按顺序分别表示每个机器人移动…...
疯狂java 1.7垃圾回收机制
内存泄漏:如果一些分配出去的内存得不到及时回收,就会引起系统运行速度下降,甚至导致程序瘫痪 Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会负责回收哪些不再使用的内存,这种机制被称为垃圾回收(Garbag…...
day01_基础
零、今日内容 1 jdk 2 idea使用 3 HelloWorld程序 4 变量 5 数据类型 6 String 一、JDK安装 JDK java开发工具包,敲代码的环境 1.1 卸载 控制面板 -> 卸载程序 -> 选择jdk,右键卸载 1.2 安装 注意: 现在安装的是JDK8版本,虽然最新的版本是21版本,但是工作市场中最流行的…...
RabbitMQ开启消息发送确认和消费手动确认
开启RabbitMQ的生产者发送消息到RabbitMQ服务端的接收确认(ACK)和消费者通过手动确认或者丢弃消费的消息。 通过配置 publisher-confirm-type: correlated 和publisher-returns: true开启生产者确认消息。 server:port: 8014spring:rabbitmq:username: …...
嵌入式系统开发【深入浅出】 GPIO 类设备的驱动程序
目录 GPIO管脚的输出功能相当于控制、输入相当于检测 使用GPIO基本流程 对于某一个管脚来说最多有几种功能? 拓展 【定时器与系统定时器】 决定定时长短的因素: 普通定时器 系统定时器 STM32F103RBT6的时钟源有哪五种 sysclk 的时钟频率由哪个时钟源提供基…...
项目管理必备的22个公式
大家好,我是老原。 趁着国庆时间比较空闲,给你们整理了一些项目管理必备的计算公式,一共22个。 每一个公式都给你们标注了适用情况和使用方法,为了方便你们理解,也加了一些例子,保准你看了就会。 觉得不…...
ccache加速编译速度
ccache https://gitee.com/lixiaoxmm/ccache.git 依赖hiredis、zstd(zstd的cmakelists.txt在build/cmake目录下) 下载mingw,https://www.mingw-w64.org/downloads/#w64devkit hiredis、zstd使用mingw编译 cmake -G “MinGW Makefiles” cmakecache.txt手动修改去掉网络下载,…...
Apache POI使用
1.导入坐标 <!-- poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${poi}</version></dependency><dependency><groupId>org.apache.poi</groupId><a…...
UNIQUE VISION Programming Contest 2023 Autumn(AtCoder Beginner Contest 323)
A - Weak Beats 链接 : A - Weak Beats 思路 : 模拟即可,如果在偶数位上出现了非0得元素,直接输出"No"后返回即可,循环顺利结束的话,就直接输出"Yes"; 代码 : #include<bits/stdc.h> #define IOS ios::sy…...
Docker 网络管理
Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机…...
网络安全国家队-安防思考与实践
按照工信部“三同步”安全建设的统一要求,本项目的实施应具备符合等级保护要求的安全防护措施(主要为传输控制、防火墙隔离、入侵检测、安全审计等网络安全措施;操作系统安全、数据库安全、防病毒管理、安全审计等基础系统安全措施࿰…...
游戏多开检测技术深度解析与实战绕过方案
1. 游戏多开检测技术全景解析 游戏多开检测本质上是一种防止同一程序重复运行的技术手段。我在逆向分析各类游戏客户端时发现,现代游戏通常会采用组合拳式的检测策略,从简单的进程查找到复杂的驱动级验证,防御层级越来越深。对于开发者而言&a…...
别怕C++!手把手拆解TinyML测试框架:用micro_test.h给你的嵌入式AI代码加个‘保险丝’
嵌入式AI开发者的测试实战指南:用micro_test.h构建TinyML质量防线 在资源受限的微控制器上开发AI应用时,一个被反复验证的真理是:没有自动化测试的代码就像没有安全网的走钢丝。当你的神经网络模型需要在仅有几KB内存的设备上运行时ÿ…...
立创·地阔星开发板开箱测评:除了点灯,STM32F103C8T6还能怎么玩?(附资源下载与避坑指南)
立创地阔星开发板深度探索:从开箱到创意项目实战 拆开快递包装的那一刻,这块蓝色PCB板安静地躺在防静电袋里——这就是最近在创客圈备受关注的立创地阔星开发板。作为一款基于STM32F103C8T6芯片的高性价比开发平台,它不仅适合初学者入门&…...
云容笔谈在自媒体内容生产中的提效实践:日更国风配图效率提升300%
云容笔谈在自媒体内容生产中的提效实践:日更国风配图效率提升300% 1. 自媒体内容创作的痛点与挑战 作为自媒体创作者,每天最头疼的就是配图问题。特别是做国风内容的账号,既要保持东方美学韵味,又要保证日更频率,传统…...
深入解析cufftPlanMany:从参数配置到高效FFT实现
1. 为什么需要cufftPlanMany? 第一次接触CUDA FFT时,很多人都是从cufftPlan1d、cufftPlan2d这些基础接口开始的。但当你真正处理实际工程问题时,会发现这些简单接口远远不够用。比如要处理批量信号、非连续内存数据、子区域FFT计算等场景时&a…...
Dynamic Deep Learning for Li-ion Battery Fault Detection: A Practical Approach with Real-world EV Da
1. 动态深度学习在锂电池故障检测中的核心价值 锂电池作为电动汽车的核心部件,其健康状况直接关系到整车的安全性和可靠性。传统基于阈值的检测方法在面对复杂多变的实际工况时,往往表现不佳。我们团队在实际测试中发现,某品牌车辆在低温环境…...
TrackingNet评估实战:从注册到结果解析
1. TrackingNet评估平台入门指南 第一次接触TrackingNet这个目标跟踪领域的权威评估平台时,我和大多数研究者一样有点懵。这个平台不像GitHub那样有直观的界面,操作流程也相对复杂。不过别担心,跟着我的实战经验走,保证你能少踩8…...
Wan2.2-I2V-A14B镜像免配置:SSH直连后cd /workspace即可执行全部命令
Wan2.2-I2V-A14B镜像免配置:SSH直连后cd /workspace即可执行全部命令 1. 镜像概述与核心优势 Wan2.2-I2V-A14B私有部署镜像是一款专为文生视频模型定制的开箱即用解决方案。这个镜像最大的特点就是"免配置"——通过SSH连接后,只需进入/works…...
别再手动改稿了!用LaTeX的soul包搞定论文批注(删除线/高亮/引用兼容)
LaTeX高效批注指南:用soul包实现学术协作的优雅排版 当导师的红色批注铺满论文初稿,或是合作者发来二十处修改意见时,大多数研究者都会面临一个共同困境——如何在保留原始内容的同时清晰标记修改痕迹?传统的手动添加删除线或高亮…...
Wan2.1 VAE与微信小程序开发结合:打造个人AI头像生成工具
Wan2.1 VAE与微信小程序开发结合:打造个人AI头像生成工具 你有没有想过,用一张自己的照片,就能快速生成几十种不同风格的艺术头像?无论是动漫风、油画感,还是赛博朋克,都能一键搞定。以前这可能需要专业的…...
