Mudanças entre as edições de "Owncloud distribuído"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 9: Linha 9:
 
2. Melhor velocidade de ''upload'' e ''download'' em diferentes locais(quando conectado a rede local)<br>
 
2. Melhor velocidade de ''upload'' e ''download'' em diferentes locais(quando conectado a rede local)<br>
 
3. Alta disponibilidade
 
3. Alta disponibilidade
 +
 +
Outro diferencial do projeto é a utilização de raspberry pi(computadores baratos do tamanho de um cartão de crédito e que consomem pouca energia) como servidores rodando as aplicações necessárias a implementação. O armazenamento fica a cargo de HD's externos conectados aos raspberry pi. Esta implementação tornasse viável e interessante para que pessoas comuns configurem e instalem nas casas de parentes próximos, podendo compartilhar os arquivos, como por exemplo fotos, músicas e filmes, de maneira fácil.
 +
  
 
==Desenvolvimento:==
 
==Desenvolvimento:==
  
O projeto tornasse interessante pois a proposta é a utilização de raspberry pi como web server's rodando as aplicações necessárias para o web serveice. O armazenamento fica a cargo de HD's conectados aos raspberry pi.
+
 
  
 
==Implementação:==
 
==Implementação:==

Edição das 19h12min de 19 de julho de 2016

O projeto

O Owncloud é um serviço web para armazenamento e compartilhamento de arquivos similar ao Dropbox ou Google Drive. O principal diferencial do Owncloud é que ele pode ser implementado de forma privada. Por ser um software de código aberto qualquer pessoa ou empresa pode baixar e instalar na sua estrutura e ficar responsável pelos dados e pelo funcionamento do serviço. É baseado no conceito de "computação em nuvem" ("cloud computing"). A implementação típica do owncloud provê um servidor web rodando os serviços e armazenando os arquivos. A ideia do trabalho é utilizar dessa ferramenta para implementar um serviço de armazenamento de arquivos descentralizado e utilizar a internet para sincronizar os arquivos em locais diferentes.

Essa implementação traria alguns benefícios:

1. Redundância geográfica dos arquivos
2. Melhor velocidade de upload e download em diferentes locais(quando conectado a rede local)
3. Alta disponibilidade

Outro diferencial do projeto é a utilização de raspberry pi(computadores baratos do tamanho de um cartão de crédito e que consomem pouca energia) como servidores rodando as aplicações necessárias a implementação. O armazenamento fica a cargo de HD's externos conectados aos raspberry pi. Esta implementação tornasse viável e interessante para que pessoas comuns configurem e instalem nas casas de parentes próximos, podendo compartilhar os arquivos, como por exemplo fotos, músicas e filmes, de maneira fácil.


Desenvolvimento:

Implementação:

Os passos abaixo devem ser feitos em todas os nós da implementação

Adicionando o repositório do Owncloud: wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key

apt-key add - < Release.key

sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list" </syntaxhighlight>

Adicionando o repositório do mariadb e galera: apt-get install software-properties-common

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main' </syntaxhighlight>

Instalando os pacotes necessários aptitude update

aptitude install -y rsync galera-3 mariadb-server owncloud csync2 </syntaxhighlight>

Vai pedir senha do banco, por garantia coloque a mesma senha em todos.

Modificar o arquivo /etc/hosts para colocar o ip e nome de todas as maquinas, por exemplo: 192.168.15.228 debian1 192.168.15.229 debian2 192.168.15.230 debian3 </syntaxhighlight>

Crie e edite o arquivo /etc/mysql/conf.d/galera.cnf com o conteúdo: [mysqld]

  1. mysql settings

binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 query_cache_size=0 query_cache_type=0 bind-address=0.0.0.0

  1. galera settings

wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_name="cluster_db" wsrep_cluster_address=gcomm://debian1,debian2,debian3 wsrep_sst_method=rsync </syntaxhighlight>

Pare o serviço mysql em todos os nós: debian1 # systemctl stop mysql

debian2 # systemctl stop mysql

debian3 # systemctl stop mysqllmente

</syntaxhighlight>

Os passos abaixo devem ser feitos somente em um dos nós:

Copie o conteúdo de /etc/mysql/debian.cnf do primeiro nó para os outros para que todos fiquem com o mesmo conteúdo.

Crie e inicie o cluste: debian1# galera_new_cluster </syntaxhighlight>

Verifique a quantidade de usuários no cluster com o comando(irá pedir a senha do banco): mysql -u root -p -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"' </syntaxhighlight>

Inicie os serviços mysql nos outros nós e verifique com o comando acima se estão entrando no cluster. systemctl start mysql </syntaxhighlight>

Deverá aparecer algo como isso(em caso de 3 nós): +--------------+ | cluster size | +--------------+ | 3 | +--------------+ </syntaxhighlight>


Criando o banco para o Owncloud(como o banco já estão sendo replicado só é necessários digitar os passos abaixo em um deles):

Digite o comando abaixo para entrar no modo de edição do banco(pedirá a senha do banco): mysql -uroot -p</syntaxhighlight>

Dentro digite: CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

CREATE DATABASE IF NOT EXISTS owncloud;

GRANT ALL PRIVILEGES ON owncloud.* TO 'username'@'localhost' IDENTIFIED BY 'password';

quit

</syntaxhighlight>

Configurando o csync2:

Criar os certificados com os comandos abaixo em todas as maquinas: openssl genrsa -out /etc/csync2_ssl_key.pem 1024 openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem </syntaxhighlight>

  • Obs: não preencha as informações pedidas(Common Name (CN)...), somente dê enter.

Crie a pasta /etc/csync2 em todos os nós: mkdir /etc/csync2</syntaxhighlight>

Gere uma chave em um dos nós e copie para os outros: csync2 -k /etc/csync2/exemplo.key

exemplo: scp /etc/csync2/exemplo.key debian2:/etc/csync2

scp /etc/csync2/exemplo.key debian3:/etc/csync2 </syntaxhighlight>

Em todas os servidores crie e edite o arquivo /etc/csync2.cfg com o seguinte conteúdo:

  1. Grupo de sincronização

group exemplo {

       host debian1 debian2 debian3;
       key /etc/csync2/exemplo.key;
       include /var/www/owncloud/data;
       include /etc/mysql/debian.cnf;
       auto none;

}</syntaxhighlight>

Crie um agendamento na crontab, colando o conteúdo a seguir no arquivo /etc/cron.d/csync2(sincroniza a cada 1 min):

*/1 * * * * root /usr/sbin/csync2 -x > /dev/null 2> /dev/null</syntaxhighlight>

texto
texto

http://tobias.ws/blog/sincronizando-arquivos-com-csync2/

https://blog.sprinternet.at/2016/03/mariadb-10-1-galera-cluster-on-debian-8-jessie/

https://doc.owncloud.org/server/9.0/admin_manual/configuration_database/linux_database_configuration.html

http://oss.linbit.com/csync2/paper.pdf