Scale Out Owncloud 高可用(2)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 

2, Owncloud Cluster配置

2.1,Owncloud 是主要用来存取用户文件的,那这些文件是存在哪里呢?上一篇文章讲过是这个参数 'datadirectory' => '/var/www/html/owncloud/data'决定的,这个目录是存在Linux本机的。那万一这台Linux本机故障,那用户文件就无法读取了,而且在Cluster环境中还会出现一致性问题。因此我们需要一个NAS共享存储,这里用一台windows 2003共享一个目录,然后挂载到两台Owncloud上。

mkdir /mnt/cifs    
mount -t cifs //XXXX/share /mnt/cifs -o username=administrator,password=123456,uid=48,gid=48,file_mode=0770,dir_mode=0770

注:一定要加0700,否则后面初次配置Owncloud时会报错大概是说此目录不是0700,不安全。

修改/etc/fstab 开机自动挂载

//XXXX/share  /mnt/cifs  cifs  username=administrator,password=123456,uid=48,gid=48,file_mode=0770,dir_mode=0770 0 0

 

2.2,Owncloud Cluster很简单,两台Owncloud Server配置和单机版基本一样,只需修改几个地方

[root@localhost cifs]# cat /var/www/html/owncloud/config/config.php    
<?php     
$CONFIG = array (     
  'datadirectory' => '/mnt/cifs',  
  'dbtype' => 'mysql',     
  'version' => '8.0.2.0',     
  'dbname' => 'owncloud2',     
  'dbhost' => '10.45.45.7',     
  'dbtableprefix' => 'oc_',     
  'dbuser' => 'cloudtest2',     
  'dbpassword' => '123456',     
  'installed' => true,     
  'instanceid' => 'ocn0m72xv1hv',     
  'passwordsalt' => 'ICXFSADFsg0yFWFASDFMaFtx/',     
  'secret' => 'F5b3zTmrVSAFDSCzYHN8dj.p8GCoRDAFtZWASDFSA',     
  'trusted_domains' =>     
  array (     
    0 => '10.45.45.6',     
  ),     
  'overwrite.cli.url' => 'http://10.45.45.6',


  'overwritehost' => 'Brohaproxy',  <--Client访问的统一hostname(Haproxy的hostname),比如用户输入http://brohaproxy来访问         
  'overwriteprotocol' => 'http', <—http or https         
  'overwritewebroot' => '',    <--不要填         
  'proxy' => '10.45.45.7',      <--可加可不加
     
);

apache的配置都单机版一样,只需修改httpd.conf文件的两个参数

 

然后分别打开两台Owncloud Server的web界面,进行初次配置owncloud数据库的时候使用10.45.45.7(HAproxy)IP。之后Owncloud会创建自己的数据库以及21个表,创建完成后,由于系统数据库及表是默认创建的,因此没有指定这21个表是NDB engine,我们需要手动一个个修改这些表为NDB engine,否则你登陆进去后会报错

clip_image001

查看owncloud.log 如下

{"reqId":"c26309ede525205498a3c16b7e40b617","remoteAddr":"10.0.0.2","app":"index","message":"Exception: {\"Message\":\"An exception occurred while executing 'SELECT `configvalue`, `appid` FROM `oc_appconfig` WHERE `configkey` = ?' with params [\\\"enabled\\\"]:\\n\\nSQLSTATE[42S02]: Base table or view not found: 1146 Table 'owncloud2.oc_appconfig' doesn't exist\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/html\\\/owncloud\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(116): Doctrine\\\\DBAL\\\\Driver\\\\AbstractMySQLDriver->convertException('An exception oc...',

 

这是因为这个表只存在于一台mysql Server上,没有在两台mysql上同步,因此当owncloud读取到另一台mysql时,会找不到这张表。我们只要手动修改alter table oc_appconfig engine=ndb;总共修改21个表,这样表就会完全同步。但在修改oc_share_external这个表时报错,

clip_image001[4]

怀疑是mountpoint的类型占字符超出了,手动修改为varchar(3700),

mysql> alter table oc_share_external modify mountpoint varchar(3700);    
Query OK, 0 rows affected (0.55 sec)     
Records: 0  Duplicates: 0  Warnings: 0

搞定,至于后面会不会因为修改这个参数遇到问题,这我就不知道了。

3, HAproxy配置

global    
    daemon     
    maxconn 256     
    log 127.0.0.1   local0

defaults    
    mode http     
    stats   uri     /haproxy-stats     
    timeout connect 5000ms     
    timeout client 50000ms     
    timeout server 50000ms

frontend http-in    
    bind *:80     
    mode http     
    log global     
    option httplog      
    option forwardfor     
    option httpclose     
    default_backend brody 

backend brody    
    mode http     
    balance roundrobin     #也可以使用其他策略     
    cookie LBN insert indirect nocache #使用Source策略无需加,如使用rr就需要加,否则HAproxy会两次转发才能正常访问     
    server serverA 10.45.45.6:80 cookie node1 weight 3 maxconn 32 check     
    server serverB 10.45.45.8:80 cookie node2 weight 3 maxconn 32 check     
    server serverC 10.45.45.1:80 cookie node3 weight 3 maxconn 32 check backup  #一定要加check,否则HAproxy不知道Server状态,无法failover

 

可以将MySQL HAproxy的配置文件一起写进去,一起执行,成功后,通过http://brohaproxy/haproxy-stats 可以看到各个Server的状态

clip_image001[6]

 

至此, Owncloud Scale-Out就搭建完成了,中间遇到很多问题,还是万能的Google帮了很大的忙,感谢世界感谢党!!

 

4, 高可用测试

模拟Owncloud1的apache及mysql故障,

clip_image001

如下还能正常访问Owncloud服务

clip_image001[4]

测试上传文件

clip_image001[6]





本文转自 taojin1240 51CTO博客,原文链接:http://blog.51cto.com/taotao1240/1653947,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
关系型数据库 MySQL 网络安全
利用ansbile部署lamp并部署Discuz(非分布式)
利用ansbile部署lamp并部署Discuz(非分布式),实验准备,设置ansbile的hosts文件,在192.168.115.148上完成相关准备,编写roles,执行
54 0
|
7月前
|
存储 缓存 NoSQL
Harbor高可用集群设计及部署(基于离线安装方式一)
基于Harbor离线安装方式的高可用方案设计及部署。
160 0
|
4月前
|
存储 关系型数据库 应用服务中间件
私有云盘:lamp部署nextcloud+高可用集群
lamp部署nextcloud+高可用集群,配置mariadb主从复制,台主机下载mariadb,配置nfs让web服务挂载,web 服务器 配置 lamp,配置nginx反向代理&&haproxy&&keepalived。
160 0
|
7月前
|
关系型数据库 应用服务中间件 数据库
Harbor高可用集群设计及部署(基于离线安装方式二)
基于Harbor离线安装方式的高可用方案设计及部署。
211 0
|
弹性计算 编解码 Ubuntu
在阿里云ECS上安装流媒体服务器软件Ti Top Streamer
Ti Top Streamer是一个国产的商业流媒体服务器软件产品,支持Linux Server。这里以阿里云ECS服务器Centos系统为例,介绍它的安装过程。
在阿里云ECS上安装流媒体服务器软件Ti Top Streamer
|
存储 关系型数据库 Linux
在Centos7环境下进行搭建postgresql-xl集群环境
在Centos7环境下进行搭建postgresql-xl集群环境
116 0
在Centos7环境下进行搭建postgresql-xl集群环境
|
存储 Linux 网络安全
|
弹性计算 关系型数据库 MySQL
利用colinux制作tinycolinx,在ecs上打造server farm和vps iaas环境代替docker
本文关键字:将tinycorelinux装在硬盘上,custom tinycore linux kernel,tcl3安装使用方法,tcl安装到硬盘,自定义linux rootfs,利用colinux代替docker组建容器。单机端口反代重用技术,内网转发复用端口
288 0
利用colinux制作tinycolinx,在ecs上打造server farm和vps iaas环境代替docker
|
Kubernetes Linux Docker
k8s_v1.15.0_HA集群基础环境搭建
Kubernetes高可用集群基础环境搭建. 在学习Kubernetes的过程中, 操作实践是非常有必要的, 但是往往第一步环境的搭建会成为门槛. 而且使用minikube不利于集群层面的学习, 不如一步到位.
1643 0

热门文章

最新文章