Scale Out Owncloud 高可用(2)

接上篇企业私有云Owncloud(2)-单机版 安装和配置》及《Scale Out Owncloud 高可用(1)》,本篇继续讲部署Owncloud集群及HAproxyphp

 

2, Owncloud Cluster配置html

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

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

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

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

//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配置和单机版基本同样,只需修改几个地方apache

[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',windows


  '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_p_w_picpath001

查看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_p_w_picpath001[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_p_w_picpath001[6]

 

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

 

4, 高可用测试

模拟Owncloud1的apache及mysql故障,

clip_p_w_picpath001

以下还能正常访问Owncloud服务

clip_p_w_picpath001[4]

测试上传文件

clip_p_w_picpath001[6]

相关文章
相关标签/搜索