中小型公司架构搭建(待补充)

nginx+NFS+rsync


█  1、nginx 虚拟主机的搭建(A 服务器)

通过在 windows 客户端设置 host 方式(代替 DNS)实现域名解析完成如下工作需求:

a.当在浏览器输入  http://www.etiantian.org  或 http://etiantian.org 浏览器页面返回内容为

http://www.etiantian.org 字符串,下同。

b.当在浏览器输入  http://bbs.etiantian.org  浏览器页面返回内容 http://bbs.etiantian.org

c.当在浏览器输入  http://blog.etiantian.org  浏览器页面返回内容 http://blog.etiantian.org

硬性要求(老男孩给大家的定的要求)  :

1)虚拟主机目录目录说明

a.www.etiantian.org 的站点目录为/data/www/www

b.bbs.etiantian.org  的站点目录为/data/www/bbs

c.blog.etiantian.org 的站点目录为/data/www/blog

2)日志配置

访问日志放到/app/logs 目录,请按日期对 nginx 访问日志(access log)实施按天日志轮询

3)备份配置

将 nginx 的站点目录打包备份,每日 00 点 10 分推送到备份服务器(必须要有)上。

由于本地磁盘空间有限,要求仅在本地保留 3 份备份,但在备份服务器 B 上要保留 180 天的备份数据,备份的数据同时包括系统配置文件、程序目录及访问日志文件

(/etc/rc.local、/var/spool、/server/scripts、/etc/sysconfig/iptables、/data/www、/app/logs 等)

解答:

█  2、备份服务器搭建(B 服务器)

a.备份目录为/backup,要求所有服务器数据备份到此目录下,并且通过程序检查备份目录备

份数据的完整性,把检查结果于每日早晨 7 点发给管理员及老大信箱。  所有备份数据,保留

180 天,但是每周五的备份数据永远保留。

b.作为 C 服务器 NFS 数据的实时热备服务器,当 NFS 宕机后可以接管 NFS 服务器提供服务。

█  3、NFS 存储服务器搭建(C 服务器)

a.在 web  A 服务器上每个站点目录下创建一个  upload 目录,将每个站点的 upload 目录挂载

到 NFS 对应数据目录,注意:实现开机挂载。

即 NFS 为每个站点目录下的 upload 目录提供数据存储。

b.NFS 上所有存储的数据,需要实时同步到备份服务器搭建(B 服务器)的/backup 目录。

█  4、批量分发管理服务器搭建(D 服务器)

a.通过 D 服务器可以批量分发指定文件(如 host)到所有服务器(A\B\C)的指定目录下。

b.通过 D 服务器可以查看所有服务器的相关信息(IP,内存,负载,IO 等)

提示:本考试题可能会涉及 nginx、定时任务 crond、rsync 服务、NFS、inotify、SSH 及简

单 shell 脚本编写能力、备份解决方案、批量管理方案、集群共享方案等方面的技术协调配

合。

1.系统优化

(1) ssh 优化


[[email protected] ~]# mkdir /data/root/backup/ -p   创建备份文件夹

[[email protected] ~]# cp /etc/ssh/sshd_config /data/root/backup/  操作前备份

[[email protected] ~]# sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config          
 [[email protected] ~]# sed -i "s/#GSSAPIAuthentication no/GSSAPIAuthentication no/g" /etc/ssh/sshd_config 
 [[email protected] ~]# sed -i "s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/g" /etc/ssh/sshd_config 
 [[email protected] ~]# diff /etc/ssh/sshd_config /data/root/backup/sshd_config                                                             操作后对比
 80,81c80,81
 < GSSAPIAuthentication no
 < #GSSAPIAuthentication yes
 ---
 > #GSSAPIAuthentication no
 > GSSAPIAuthentication yes
 122c122
 < UseDNS no
 ---
 > #UseDNS yes
 [[email protected] ~]# /etc/init.d/sshd restart                重启服务

(2)修改或查看字符集(en_UTF-8就OK)


[[email protected] ~]# echo $LANG
 en_US.UTF-8

(3)配置服务器和互联网时间同步


[[email protected] ~]# date                   查看时间
 Mon Jun 22 19:25:48 CST 2015
 [[email protected] ~]# mkdir /server/scripts/ -p

[[email protected] ~]# ntpdate time.nist.gov                更新时间(暂时)
  5 Jul 09:28:35 ntpdate[27413]: step time server 128.138.141.172 offset 430801.085054 sec

[[email protected] ~]# echo "ntpdate time.nist.gov" >/server/scripts/ntpdate.sh  写入脚本
 [[email protected] ~]# cat /server/scripts/ntpdate.sh        查看脚本写入内容

ntpdate  time.nist.gov

[[email protected] ~]# /bin/sh /server/scripts/ntpdate.sh          执行脚本
  5 Jul 09:44:29 ntpdate[27516]: adjust time server 128.138.141.172 offset 0.039540 sec

[[email protected] ~]# crontab -e                  编辑定时任务
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1

[[email protected] ~]# crontab -l                       查看定时任务
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1

(4)基础环境

配置IP、修改主机名、配置免密码登录、分发host、关闭防火墙

① 配置IP(一般不要用DHCP)
② 修改主机名

① 配置IP(一般不要用DHCP)

② 修改主机名

方法一:

[[email protected] ~]# hostname Distribution-Center

[[email protected] ~]# vim /etc/sysconfig/network
 
 NETWORKING=yes
 HOSTNAME=Distribution-Center

[[email protected] ~]# vim /etc/hosts
 
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain
 4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain
 6
 192.168.10.108 Distribution-Center

[[email protected] .ssh]# reboot

方法二:

[[email protected] .ssh]# hostname  NFS-server
 [[email protected] .ssh]# sed -i "s#yvonne.oldboy#NFS-server#g" /etc/sysconfig/network
 [[email protected] .ssh]# cat /etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=NFS-server

[[email protected] .ssh]# echo "192.168.10.106  NFS-server" >>/etc/hosts

[[email protected] .ssh]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.10.106  NFS-server

[[email protected] .ssh]# reboot

③ 配置免密码登录:

③  配置免密码登录:

[[email protected] ~]# mkdir -p ~/.ssh/       创建ssh目录

[[email protected] ~]# ssh-keygen -t dsa     创建密码文件
 Generating public/private dsa key pair.
 Enter file in which to save the key (/root/.ssh/id_dsa): 
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /root/.ssh/id_dsa.
 Your public key has been saved in /root/.ssh/id_dsa.pub.
 The key fingerprint is:
 7f:7a:f1:94:dd:4c:96:4b:2c:66:c0:cc:0a:02:5e:f4 [email protected]
 The key‘s randomart image is:
 +--[ DSA 1024]----+
 |   .oo    +      |
 |  . ....   =     |
 |   .  .E. . . . .|
 |         .   + +o|
 |        S   o o*o|
 |         .  . o.+|
 |          . .+   |
 |           o. .  |
 |          ..     |
 +-----------------+
 [[email protected] ~]# ls -l ~/.ssh/   
 total 8
 -rw-------. 1 root root 668 Jul  5 11:35 id_dsa               私钥
 -rw-r--r--. 1 root root 614 Jul  5 11:35 id_dsa.pub        公钥

[[email protected] ~]# cd ~/.ssh/

[[email protected] .ssh]# ssh-copy-id -i id_dsa.pub [email protected]      分发公钥文件
 [email protected]‘s password: 
 Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:
 
   .ssh/authorized_keys
 
 to make sure we haven‘t added extra keys that you weren‘t expecting.
 
 [[email protected] .ssh]#

[[email protected] .ssh]# ssh p22 [email protected] /sbin/ifconfig     没有要密码哦

④ 关闭防火墙:

关闭防火墙:

[[email protected] ~]# /etc/init.d/iptables stop

2.搭建nginx虚拟主机


[[email protected] ~]# cat /etc/redhat-release      查看系统版本号
 CentOS release 6.6 (Final)
 [[email protected] ~]# uname -r                           //print the  kernel release
 2.6.32-504.el6.x86_64
 [[email protected] ~]# uname -m                         // print the machine  hardware name
 x86_64
 [[email protected] ~]# rpm -qa gcc gcc-c++
 gcc-4.4.7-11.el6.x86_64
 gcc-c++-4.4.7-11.el6.x86_64

[[email protected] ~]# rpm -qa pcre pcre-devel 
 pcre-7.8-6.el6.x86_64
 [[email protected] ~]# yum -y install pcre pcre-devel     安装pcre库(兼容正则表达式)

[[email protected] ~]# rpm -qa openssl openssl-devel
 openssl-1.0.1e-30.el6.x86_64
 [[email protected] ~]# yum -y install openssl openssl-devel    (安全的SSL协议传输http)

[[email protected] ~]# rpm -qa pcre pcre-devel openssl openssl-devel
 pcre-7.8-6.el6.x86_64
 openssl-1.0.1e-30.el6.11.x86_64
 openssl-devel-1.0.1e-30.el6.11.x86_64
 pcre-devel-7.8-6.el6.x86_64

[[email protected] nginx-1.6.3]# wget http://nginx.org/download/nginx-1.6.3.tar.gz    下载安装包

[[email protected] nginx-1.6.3]# ls      确认安装包下载成功

[[email protected] nginx-1.6.3]# tar -zxvf nginx-1.6.3.tar.gz     解压

[[email protected] nginx-1.6.3]# ls     查看解压结果

[[email protected] nginx-1.6.3]# cd nginx-1.6.3

[[email protected] nginx-1.6.3]# ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module      自定义安装配置

[[email protected] nginx-1.6.3]# make && make install  编译安装

[[email protected] nginx-1.6.3]# echo $?     查看执行结果

0                                                  成功

[[email protected] nginx-1.6.3]# useradd nginx -s /sbin/nologin -M    创建用户
 [[email protected] nginx-1.6.3]# id nginx   查看用户和组信息

uid=500(nginx) gid=500(nginx) groups=500(nginx)

[[email protected] nginx-1.6.3]# ll /application/nginx-1.6.3/
 total 16
 drwxr-xr-x. 2 root root 4096 Jul  5 15:43 conf       配置文件目录
 drwxr-xr-x. 2 root root 4096 Jul  5 15:43 html       站点目录
 drwxr-xr-x. 2 root root 4096 Jul  5 15:43 logs        日志文件目录
 drwxr-xr-x. 2 root root 4096 Jul  5 15:43 sbin        执行文件目录

[[email protected] nginx-1.6.3]# ln -s /application/nginx-1.6.3/ /application/nginx    为了方便使用,做软链接
 [[email protected] nginx-1.6.3]# ll /application/
 total 4
 lrwxrwxrwx. 1 root root   25 Jul  5 15:53 nginx -> /application/nginx-1.6.3/
 drwxr-xr-x. 6 root root 4096 Jul  5 15:43 nginx-1.6.3

[[email protected] nginx-1.6.3]# /application/nginx/sbin/nginx      启动服务

[[email protected] nginx-1.6.3]# ps -ef |grep nginx |grep -v grep     查看服务进程
 root       4762      1  0 15:55 ?        00:00:00 nginx: master process /application/nginx/sbin/nginx      主进程
 nginx      4763   4762  0 15:55 ?        00:00:00 nginx: worker process         工作进程

[[email protected] nginx-1.6.3]# netstat -lntup |grep nginx    端口是80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN

[[email protected] nginx-1.6.3]# curl 127.0.0.1       测试本地

浏览器登录测试成功。

Nginx虚拟主机:


虚拟主机:

[[email protected] ~]# cd  /application/nginx/conf

[[email protected] conf]# cp nginx.conf /data/root/backup/     备份nginx.conf配置文件
 [[email protected] conf]# egrep -v "#|^$" nginx.conf.default>nginx.conf

将nginx.conf.default中没有注释、不是空白行的内容导出到nginx.conf

[[email protected] conf]# mkdir ../html/www
 [[email protected] conf]# mkdir ../html/bbs
 [[email protected] conf]# mkdir ../html/blog
 [[email protected] conf]# echo "www.etiantian.org" >../html/www/index.html
 [[email protected] conf]# echo "bbs.etiantian.org" >../html/bbs/index.html   
 [[email protected] conf]# echo "blog.etiantian.org" >../html/blog/index.html

[[email protected] conf]# cat ../html/{www,bbs,blog}/index.html
 www.etiantian.org
 bbs.etiantian.org
 blog.etiantian.org

[[email protected] conf]# vim nginx.conf
 
 worker_processes  1;
 events {
     worker_connections  1024;
 }
 http {
     include       mime.types;
     default_type  application/octet-stream;
     log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                       ‘$status $body_bytes_sent "$http_referer" ‘
                       ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 
     access_log  logs/access.log  main;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       80;
         server_name  www.etiantian.org alias etiantian.org;
         access_log  /app/logs/www_logs/access_www.log  main;
         location / {
             root   html/www;
             index  index.html index.htm;
         }
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
     }
     server {
         listen       80;
         server_name  bbs.etiantian.org;
         access_log  /app/logs/bbs_logs/access_bbs.log  main;
         location / {
             root   html/bbs;
             index  index.html index.htm;
         }
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
     }
     server {
         listen       80;
         server_name  blog.etiantian.org;
         access_log  /app/logs/blog_logs/access_blog.log  main;
         location / {
             root   html/blog;
             index  index.html index.htm;
         }

[[email protected] conf]# vim /etc/hosts

192.168.10.104  www.etiantian.org       etiantian.org   
 192.168.10.104  bbs.etiantian.org       blog.etiantian.org

[[email protected] conf]# /application/nginx/sbin/nginx -t
 nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
 nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
 [[email protected] conf]# /application/nginx/sbin/nginx -s reload
 [[email protected] conf]# curl blog.etiantian.org
 blog.etiantian.org
 [[email protected] conf]# curl www.etiantian.org 
 www.etiantian.org
 [[email protected] conf]# curl bbs.etiantian.org
 bbs.etiantian.org
 [[email protected] conf]# curl etiantian.org    
 www.etiantian.org

[[email protected] conf]# ll /app/logs/bbs_logs/
 total 4
 -rw-r--r--. 1 root root 183 Jul  5 20:50 access_bbs.log
 [[email protected] conf]# ll /app/logs/blog_logs/
 total 4
 -rw-r--r--. 1 root root 183 Jul  5 20:50 access_logs.log

[[email protected] conf]# ll /app/logs/www_logs/
 total 4
 -rw-r--r--. 1 root root 366 Jul  5 20:56 access_www.log

日志轮询:

[[email protected] www_logs]# vim /server/scripts/logs_poll.sh 
 
 #!/bin/sh
 #print for poll nginx logs by yvonne 2015-7-5 21:15:37.
 [ -d /application/nginx/logs/ ] && cd /application/nginx/logs/ ||exit 1
 [ -f access.log ] ||exit 1
 /bin/mv access.log access_$(date +%F).log
 
 [ -d /application/nginx/logs/ ] && cd /application/nginx/logs/ ||exit 1
 [ -f error.log ] || exit 1
 /bin/mv error.log error_$(date +%F).log
 
 [ -d /app/logs/www_logs/ ] && cd /app/logs/www_logs/ ||exit 
 [ -f access_www.log ] ||exit 1
 /bin/mv access_www.log access_www_$(date +%F).log
 
 [ -d /app/logs/bbs_logs/ ] && cd /app/logs/bbs_logs/ ||exit 
 [ -f access_bbs.log ] ||exit 1
 /bin/mv access_bbs.log access_bbs_$(date +%F).log
 
 [ -d /app/logs/blog_logs/ ] && cd /app/logs/blog_logs/ ||exit 
 [ -f access_blog.log ] ||exit 1
 /bin/mv access_blog.log access_blog_$(date +%F).log
 "/server/scripts/logs_poll.sh" 21L, 781C written
 [[email protected] www_logs]# 
 [[email protected] www_logs]# 
 [[email protected] www_logs]# /bin/sh /server/scripts/logs_
 logs_poll.sh  logs_test.sh  
 [[email protected] www_logs]# /bin/sh /server/scripts/logs_poll.sh 
 [[email protected] www_logs]# /bin/sh /server/scripts/logs_poll.sh 
 [[email protected] www_logs]#

配置好rsync daemon服务器后,将此web服务器配置为rsync daemon客户端。

[[email protected] ~]# echo "oldboy" >/etc/rsync.password
 [[email protected] ~]# chmod 600 /etc/rsync.password 
 [[email protected] ~]# ll /etc/rsync.password 
 -rw-------. 1 root root 7 Jul  5 22:04 /etc/rsync.password
 [[email protected] ~]# cat /etc/rsync.password 
 oldboy

[[email protected] ~]# rsync -r /data [email protected]::backup --password-file=/etc/rsync.password    测试推送

[[email protected] ~]# mkdir -p /data/www/www
 [[email protected] ~]# mkdir -p /data/www/bbs
 [[email protected] ~]# mkdir -p /data/www/blog

[[email protected] ~]# mkdir  -p /data/www/html

[[email protected] ~]# mkdir -p /data/app/logs

[[email protected] etc]# mkdir -p /data/etc_rc.local
 [[email protected] etc]# mkdir -p /data/etc_sysconfig_iptables
 [[email protected] etc]# mkdir -p data/var_spool_cron
 [[email protected] etc]# mkdir -p /data/server_scripts

[[email protected] html]# vim /server/scripts/tar.sh

#!/bin/bash
 #print for tar nginx html file to /data/www  by yvonne 2015-7-5 22:33:48.
 cd /application/nginx/html &&\
 tar -zcf /data/www/www/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print $4}‘`_app_logs
 _www_logs_`date +%F` www/
 tar -zcf /data/www/bbs/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print $4}‘`_app_logs
 _bbs_logs_`date +%F` bbs/
 tar -zcf /data/www/blog/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print $4}‘`_app_log
 s_blog_logs_`date +%F` blog/
 
 cd /application/nginx &&\
 tar -zcf /data/www/html/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print $4}‘`_applica
 tion_nginx_html_`date +%F` html/

#print for tar nginx logs to  /data/app/logs by yvonne 2015-7-5 22:33:48.

cd /app &&\

tar -zcf  /data/app/logs/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print  $4}‘`_nginx_a

pp_logs_`date +%F` logs/

#print for tar system files  to /data/ by yvonne 2015-7-5 22:33:48.

cd /etc/ &&\

tar -zcf  /data/etc_rc.local/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print  $4}‘`_etc

_rc.local_`date +%F`  rc.local

cd /etc/sysconfig/  &&\

tar -zcf /data/etc_sysconfig_iptables/`/sbin/ifconfig  eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print

$4}‘`_etc_sysconfig_iptables_`date  +%F` iptables

cd /var/spool/ &&\

tar -zcf  /data/var_spool_cron/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print  $4}‘`_v

ar_spool_cron_`date +%F`  cron/

cd /server/ &&\

tar -zcf  /data/server_scripts/`/sbin/ifconfig eth4 |awk -F ‘[: ]+‘ ‘NR==2 {print  $4}‘`_s

erver_scripts_`date +%F`  scripts/

[[email protected] html]# /bin/sh /server/scripts/tar.sh

[[email protected] html]# crontab -e                     
 #print for tar important file to backup by yvonne 2015-7-5 22:33:48.
 00 00 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2&>1

[[email protected] html]# crontab -l
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for tar important file to backup by yvonne 2015-7-5 22:33:48.
 00 00 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2&>1

备份文件(推送到rsync daemon)

[[email protected] ~]# vim /server/scripts/rsync.sh
 
 #!/bin/sh
 #print for backup /data/ to rsync daemon /backup by yvonne 2015-7-5 23:16.
 rsync -r /data [email protected]::backup --password-file=/etc/rsync.password

[[email protected] ~]# /bin/sh  /server/scripts/rsync.sh 
 [[email protected] ~]# crontab -e

#print for backup /data/ to  rsync daemon /backup by yvonne 2015-7-5 23:16.

10 00 * * * /bin/sh   /server/scripts/rsync.sh >/dev/null 2&>1

[[email protected] ~]# crontab -l
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for tar important file to backup by yvonne 2015-7-5 22:33:48.
 00 00 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2&>1
 
 
 #print for backup /data/ to rsync daemon /backup by yvonne 2015-7-5 23:16.
 10 00 * * * /bin/sh  /server/scripts/rsync.sh >/dev/null 2&>1

只保留本地备份文件3天

[[email protected] server]# vim /server/scripts/reserv.sh                               
 
 #print for reserv 3 days local backup files by 2015-7-5 23:30:11.
 find /data/ -type f -mtime +3 -name "*.tar.gz" |xargs rm -rf

[[email protected] server]# /bin/sh /server/scripts/reserv.sh 
 [[email protected] server]# crontab -e

#print for reserv 3 days  local backup files by 2015-7-5 23:30:11.

00 2 * * * /bin/sh  /server/scripts/reserv.sh >/dev/null 2&>1

[[email protected] server]# crontab -l
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for tar important file to backup by yvonne 2015-7-5 22:33:48.
 00 00 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2&>1
 
 
 #print for backup /data/ to rsync daemon /backup by yvonne 2015-7-5 23:16.
 10 00 * * * /bin/sh  /server/scripts/rsync.sh >/dev/null 2&>1
 
 #print for reserv 3 days local backup files by 2015-7-5 23:30:11.
 00 2 * * * /bin/sh /server/scripts/reserv.sh >/dev/null 2&>1
 [[email protected] server]#

搭好NFS-server后,将此web配置为NFS-client :

[[email protected] ~]# rpm -qa rpcbind nfs-utils
 [[email protected] ~]# yum -y install rpcbind nfs-utils

[[email protected] ~]# /etc/init.d/rpcbind start
 Starting rpcbind:                                          [  OK  ]

[[email protected] ~]# ps -ef |grep rpcbind |grep -v grep
 rpc        7938      1  0 18:28 ?        00:00:00 rpcbind
 [[email protected] ~]# netstat -lntup |grep rpcbind
 tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      7938/rpcbind        
 tcp        0      0 :::111                      :::*                        LISTEN      7938/rpcbind        
 udp        0      0 0.0.0.0:111                 0.0.0.0:*                               7938/rpcbind        
 udp        0      0 0.0.0.0:905                 0.0.0.0:*                               7938/rpcbind        
 udp        0      0 :::111                      :::*                                    7938/rpcbind        
 udp        0      0 :::905                      :::*                                    7938/rpcbind        
 [[email protected] ~]#

[[email protected] ~]# mkdir /data/www/www/upload
 [[email protected] ~]# mkdir /data/www/bbs/upload
 [[email protected] ~]# mkdir /data/www/blog/upload

[[email protected] ~]# mount -t nfs 192.168.10.103:/data/www/www/upload/ /data/www/www/upload/ 
 [[email protected] ~]# mount -t nfs 192.168.10.103:/data/www/bbs/upload/ /data/www/bbs/upload/   
 [[email protected] ~]# mount -t nfs 192.168.10.103:/data/www/blog/upload/ /data/www/blog/upload/ 
 [[email protected] ~]#

[[email protected] ~]# mount
 /dev/sda2 on / type ext4 (rw)
 proc on /proc type proc (rw)
 sysfs on /sys type sysfs (rw)
 devpts on /dev/pts type devpts (rw,gid=5,mode=620)
 tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
 /dev/sda1 on /boot type ext4 (rw)
 none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
 sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
 192.168.10.103:/data/www/www/upload/ on /data/www/www/upload type nfs (rw,vers=4,addr=192.168.10.103,clientaddr=192.168.10.104)
 192.168.10.103:/data/www/bbs/upload/ on /data/www/bbs/upload type nfs (rw,vers=4,addr=192.168.10.103,clientaddr=192.168.10.104)
 192.168.10.103:/data/www/blog/upload/ on /data/www/blog/upload type nfs (rw,vers=4,addr=192.168.10.103,clientaddr=192.168.10.104)
 [[email protected] ~]#

[[email protected] ~]# ls /data/www/www/upload/
 iam_nfs_server
 [[email protected] ~]#

[[email protected] ~]# vim /etc/rc.local       开机自动挂载
  
 #!/bin/sh
 #
 # This script will be executed *after* all the other init scripts.
 # You can put your own initialization stuff in here if you don‘t
 # want to do the full Sys V style init stuff.
 
 touch /var/lock/subsys/local
 /etc/init.d/iptables stop
 
 
 /etc/init.d/rpcbind start
 mount -t nfs 192.168.10.103:/data/www/www/upload/ /data/www/www/upload/
 mount -t nfs 192.168.10.103:/data/www/bbs/upload/ /data/www/bbs/upload/                    
 mount -t nfs 192.168.10.103:/data/www/blog/upload/ /data/www/blog/upload/                    
 ~

3.搭建rsync daemon 备份服务器


[[email protected] ~]# rpm -qa rsync
 rsync-3.0.6-12.el6.x86_64
 [[email protected] ~]# touch /etc/rsyncd.conf
 [[email protected] ~]# vim /etc/rsyncd.conf 
 #created by yvonne 2015-7-5 21:59:55
 ##rsyncd.conf start##
 uid = rsync
 gid = rsync
 use chroot = no
 max connections = 2000
 timeout = 600
 pid file = /var/run/rsyncd.pid
 lock file = /var/run/rsync.lock
 log file = /var/log/rsyncd.log
 ignore errors
 read only = false
 list = false
 hosts allow = 192.168.10.0/24
 hosts deny = 0.0.0.0/32
 auth users = rsync_backup
 secrets file = /etc/rsync.password
 #####################################
 [backup]
 comment = backup server  by yvonne 2015-7-5 22:00:06
 path = /backup
 "/etc/rsyncd.conf" 22L, 696C written                                  
 [[email protected] ~]# mkdir /backup
 [[email protected] ~]# useradd rsync

[[email protected] ~]# id rsync
 uid=500(rsync) gid=500(rsync) groups=500(rsync)
 [[email protected] ~]# chown -R rsync /backup/
 [[email protected] ~]# ls /backup/
 [[email protected] ~]# ll /backup/
 total 0
 [[email protected] ~]# ls -ld /backup/ 
 drwxr-xr-x. 2 rsync root 4096 Jul  5 22:00 /backup/

[[email protected] ~]# echo "rsync_backup:oldboy" >>/etc/rsync.password
 [[email protected] ~]# chmod 600 /etc/rsync.password 
 [[email protected] ~]# ll /etc/rsync.password 
 -rw-------. 1 root root 20 Jul  5 22:02 /etc/rsync.password
 [[email protected] ~]# cat /etc/rsync.password 
 rsync_backup:oldboy

[[email protected] ~]# rsync --daemon
 [[email protected] ~]#

[[email protected] ~]# vim /etc/rc.local 
 
 #!/bin/sh
 #
 # This script will be executed *after* all the other init scripts.
 # You can put your own initialization stuff in here if you don‘t
 # want to do the full Sys V style init stuff.
 
 touch /var/lock/subsys/local
 /etc/init.d/iptables stop
 rsync --daemon
 ~

备份服务器上保留180天的数据,但周五数据永久保留:

[[email protected] ~]# vim /server/scripts/reserve.sh      
 
 #!/bin/sh
 #print for reserve backup files 180 days by yvonne 2015-7-5 23:38:34.
 find /backup/data/ -type f -mtime +180 -name "*.tar.gz" |xargs rm -rf

[[email protected] ~]# /bin/sh /server/scripts/reserve.sh 
 [[email protected] ~]# crontab -e

#print for reserve backup files  180 days by yvonne 2015-7-5 23:38:34.

00 05 * * * /bin/sh  /server/scripts/reserve.sh >/dev/null 2&>1

[[email protected] ~]# crontab -l
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for reserve backup files 180 days by yvonne 2015-7-5 23:38:34.
 00 05 * * * /bin/sh /server/scripts/reserve.sh >/dev/null 2&>1

检查备份目录的备份数据完整性


程序检查备份目录的备份数据完整性,并把检查结果于每日早晨7点发给管理员及老大信箱;


完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个

1、哈希对比

2、签名校验

3、inotify

方法有2个:

A、定期检测,例如通过cron或程序内置计时器

B、实时检测,inotify

1、2一般和A,3一般和B。用inotify做完整性检查的程序现在貌似还没现成比较好用的,谁推荐一个。

http://www.2cto.com/os/201101/82861.html  (参考)

此处用inotify 检测完整性没有成功;做检测完整性(有问题还没做)
 [[email protected] ~]# cat /etc/redhat-release 
 CentOS release 6.6 (Final)
 [[email protected] ~]# uname -r
 2.6.32-504.el6.x86_64
 [[email protected] ~]# uname -m
 x86_64

[[email protected] ~]# rpm -qa inotify
 [[email protected] ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz inotify-tools-3.14.tar.gz

[[email protected] ~]# ls
 anaconda-ks.cfg  index.html  inotify-tools-3.14.tar.gz  install.log  install.log.syslog

[[email protected] ~]# ls -l /proc/sys/fs/inotify/
 total 0
 -rw-r--r-- 1 root root 0 Jul  6 11:23 max_queued_events
 -rw-r--r-- 1 root root 0 Jul  6 11:23 max_user_instances
 -rw-r--r-- 1 root root 0 Jul  6 11:23 max_user_watches

[[email protected] ~]# tar zxvf inotify-tools-3.14.tar.gz

[[email protected] ~]# ls
 anaconda-ks.cfg  inotify-tools-3.14         install.log
 index.html       inotify-tools-3.14.tar.gz  install.log.syslog
 [[email protected] ~]# cd inotify-tools-3.14
 [[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14

[[email protected] ~]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools

[[email protected] ~]# ll /usr/local/inotify-tools
 lrwxrwxrwx. 1 root root 30 Jul  6 13:43 /usr/local/inotify-tools -> /usr/local/inotify-tools-3.14/

[[email protected] ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T%w%f‘ -e create,delete /backup/

[[email protected] ~]# vim /server/scripts/inotify.sh 
 
 #!/bin/sg
 #print for Check the backup data integrity of /backup  by yvonne 2015-7-6 17:56:15.
 
 /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T%w%f‘ -e create,delete /backup/ \
 |while read file
  do
  rsync -r /data [email protected]::backup --password-file=/etc/rsync.password
 done

 

 

 

MD5算法验证网络文件传输的完整性

[[email protected] ~]# find /backup/ -type f -name "*.tar.gz"
 /backup/data/var_spool_cron/192.168.10.104_var_spool_cron_2015-07-06.tar.gz
 /backup/data/etc_sysconfig_iptables/192.168.10.104_etc_sysconfig_iptables_2015-07-06.tar.gz
 /backup/data/server_scripts/192.168.10.104_server_scripts_2015-07-06.tar.gz
 /backup/data/www/bbs/192.168.10.104_app_logs_bbs_logs_2015-07-06.tar.gz
 /backup/data/www/blog/192.168.10.104_app_logs_blog_logs_2015-07-06.tar.gz
 /backup/data/www/html/192.168.10.104_application_nginx_html_2015-07-06.tar.gz
 /backup/data/www/www/192.168.10.104_app_logs_www_logs_2015-07-06.tar.gz
 /backup/data/etc_rc.local/192.168.10.104_etc_rc.local_2015-07-06.tar.gz

[[email protected] ~]# md5sum $(find /backup/ -type f -name "*.tar.gz")>md5sumtar.md5
 [[email protected] ~]# md5sum -c md5sumtar.md5
 /backup/data/var_spool_cron/192.168.10.104_var_spool_cron_2015-07-06.tar.gz: OK
 /backup/data/etc_sysconfig_iptables/192.168.10.104_etc_sysconfig_iptables_2015-07-06.tar.gz: OK
 /backup/data/server_scripts/192.168.10.104_server_scripts_2015-07-06.tar.gz: OK
 /backup/data/www/bbs/192.168.10.104_app_logs_bbs_logs_2015-07-06.tar.gz: OK
 /backup/data/www/blog/192.168.10.104_app_logs_blog_logs_2015-07-06.tar.gz: OK
 /backup/data/www/html/192.168.10.104_application_nginx_html_2015-07-06.tar.gz: OK
 /backup/data/www/www/192.168.10.104_app_logs_www_logs_2015-07-06.tar.gz: OK
 /backup/data/etc_rc.local/192.168.10.104_etc_rc.local_2015-07-06.tar.gz: OK

[[email protected] ~]# vim /server/scripts/md5sum.sh    
 
 #!/bin/sh
 #print for md5sum *.tar.gz files in /backup to check files and send mail  by yvonne 2015-7-8 14:07:29.
 
 md5sum $(find /backup/ -type f -name "*.tar.gz")>md5sumtar.md5 &&\
 md5sum -c md5sumtar.md5

 
                                                                                                                      
 "/server/scripts/md5sum.sh" 6L, 206C written
 [[email protected] ~]# /bin/sh /server/scripts/md5sum.sh 
 /backup/data/var_spool_cron/192.168.10.104_var_spool_cron_2015-07-06.tar.gz: OK
 /backup/data/etc_sysconfig_iptables/192.168.10.104_etc_sysconfig_iptables_2015-07-06.tar.gz: OK
 /backup/data/server_scripts/192.168.10.104_server_scripts_2015-07-06.tar.gz: OK
 /backup/data/www/bbs/192.168.10.104_app_logs_bbs_logs_2015-07-06.tar.gz: OK
 /backup/data/www/blog/192.168.10.104_app_logs_blog_logs_2015-07-06.tar.gz: OK
 /backup/data/www/html/192.168.10.104_application_nginx_html_2015-07-06.tar.gz: OK
 /backup/data/www/www/192.168.10.104_app_logs_www_logs_2015-07-06.tar.gz: OK
 /backup/data/etc_rc.local/192.168.10.104_etc_rc.local_2015-07-06.tar.gz: OK
    
 [[email protected] ~]# vim /server/scripts/send_mail.sh 
 
 
 #!/bin/sh
 #print for send mail check files to admin mail  by yvonne 2015-7-8 14:07:29.
 /bin/sh /server/scripts/md5sum.sh &&\
 md5sum -c md5sumtar.md5 |mail -s "rsync-daemon-file-check" [email protected]

                                                                                                            
 ~                                                                                                                        
 "/server/scripts/send_mail.sh" 5L, 202C written
 [[email protected] ~]# 
 [[email protected] ~]# /bin/sh /server/scripts/send_mail.sh 
 /backup/data/var_spool_cron/192.168.10.104_var_spool_cron_2015-07-06.tar.gz: OK
 /backup/data/etc_sysconfig_iptables/192.168.10.104_etc_sysconfig_iptables_2015-07-06.tar.gz: OK
 /backup/data/server_scripts/192.168.10.104_server_scripts_2015-07-06.tar.gz: OK
 /backup/data/www/bbs/192.168.10.104_app_logs_bbs_logs_2015-07-06.tar.gz: OK
 /backup/data/www/blog/192.168.10.104_app_logs_blog_logs_2015-07-06.tar.gz: OK
 /backup/data/www/html/192.168.10.104_application_nginx_html_2015-07-06.tar.gz: OK
 /backup/data/www/www/192.168.10.104_app_logs_www_logs_2015-07-06.tar.gz: OK
 /backup/data/etc_rc.local/192.168.10.104_etc_rc.local_2015-07-06.tar.gz: OK
 [[email protected] ~]# crontab -e
 
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for reserve backup files 180 days by yvonne 2015-7-5 23:38:34.
 00 05 * * */5 /bin/sh /server/scripts/reserve.sh >/dev/null 2&>1
 
 #print for md5sum *.tar.gz files in /backup to check files and send mail  by yvonne 2015-7-8 14:07:29.
 00 07 * * * /bin/sh /server/scripts/send_mail.sh >/dev/null 2>&1

 ~                                                                                                                        
                                                                                                                      
 "/tmp/crontab.3FScaB" 9L, 417C written
 crontab: installing new crontab
 [[email protected] ~]# crontab -l
 
 #print for ntpdate by yvonne 2015-7-5 09:46:20.
 */5 * * * * /bin/sh /server/scripts/ntpdate.sh >/dev/null 2>&1
 
 #print for reserve backup files 180 days by yvonne 2015-7-5 23:38:34.
 00 05 * * */5 /bin/sh /server/scripts/reserve.sh >/dev/null 2&>1
 
 #print for md5sum *.tar.gz files in /backup to check files and send mail  by yvonne 2015-7-8 14:07:29.
 00 07 * * * /bin/sh /server/scripts/send_mail.sh >/dev/null 2>&1
 [[email protected] ~]#

4.NFS存储


[[email protected] ~]# rpm -qa rpcbind nfs-utils
 [[email protected] ~]# yum -y install rpcbind nfs-utils

[[email protected] ~]# rpm -qa rpcbind nfs-utils       
 rpcbind-0.2.0-11.el6.x86_64
 nfs-utils-1.2.3-54.el6.x86_64
 [[email protected] ~]# /etc/init.d/rpcbind start
 Starting rpcbind:                                          [  OK  ]
 [[email protected] ~]# /etc/init.d/nfs start    
 Starting NFS services:                                     [  OK  ]
 Starting NFS quotas:                                       [  OK  ]
 Starting NFS mountd:                                       [  OK  ]
 Starting NFS daemon:                                       [  OK  ]
 Starting RPC idmapd:                                       [  OK  ]

[[email protected] ~]# mkdir /data/www/www/upload -p
 [[email protected] ~]# mkdir /data/www/bbs/upload -p   
 [[email protected] ~]# mkdir /data/www/blog/upload -p

[[email protected] ~]# vim /etc/exports 
 #print for share files and sync web-server files by yvonne 2015-7-6 18:22:56.
 /data/www/blog/upload 192.168.10.0/24(rw,sync,all_squash)
 /data/www/bbs/upload 192.168.10.0/24(rw,sync,all_squash)
 /data/www/www/upload 192.168.10.0/24(rw,sync,all_squash)

~

[[email protected] ~]# /etc/init.d/nfs reload

[[email protected] ~]# showmount -e 192.168.10.103
 Export list for 192.168.10.103:
 /data/www/www/upload  192.168.10.0/24
 /data/www/bbs/upload  192.168.10.0/24
 /data/www/blog/upload 192.168.10.0/24

[[email protected] ~]# chown -R  nfsnobody /data/www/www/upload/
 [[email protected] ~]# chown -R  nfsnobody /data/www/bbs/upload/
 [[email protected] ~]# chown -R  nfsnobody /data/www/blog/upload/

[[email protected] ~]# touch /data/www/www/upload/iam_nfs_server

[[email protected] ~]# vim /etc/rc.local    开机启动服务
 
 #!/bin/sh
 #
 # This script will be executed *after* all the other init scripts.
 # You can put your own initialization stuff in here if you don‘t
 # want to do the full Sys V style init stuff.
 
 touch /var/lock/subsys/local
 /etc/init.d/iptables stop
 
 /etc/init.d/rpcbind start
 /etc/init.d/nfs start

Rsync+Inotify实时备份


保存NFS上的所有数据到rsync  daemon 服务器,实时备份:

[[email protected] ~]# rpm -qa inotify

[[email protected] ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz inotify-tools-3.14.tar.gz

[[email protected] ~]# tar -zxvf inotify-tools-3.14.tar.gz

[[email protected] ~]# ls
 anaconda-ks.cfg  index.html.1        inotify-tools-3.14.tar.gz    install.log         wget-log
 index.html       inotify-tools-3.14  inotify-tools-3.14.tar.gz.1  install.log.syslog
 [[email protected] ~]# cd inotify-tools-3.14

[[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
 [[email protected] inotify-tools-3.14]# make && make install

[[email protected] inotify-tools-3.14]# echo $?
 0

[[email protected] inotify-tools-3.14]# cd
 [[email protected] ~]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools
 [[email protected] ~]# ll /usr/local/inotify-tools
 lrwxrwxrwx. 1 root root 30 Jul  6 19:53 /usr/local/inotify-tools -> /usr/local/inotify-tools-3.14/

[[email protected] ~]# echo "oldboy" >/etc/rsync.password
 [[email protected] ~]# chmod 600 /etc/rsync.password 
 [[email protected] ~]# ll /etc/rsync.password 
 -rw-------. 1 root root 7 Jul  6 20:03 /etc/rsync.password
 [[email protected] ~]# cat /etc/rsync.password 
 oldboy

[[email protected] ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T%w%f‘ -e  create,delete /backup/

[[email protected] ~]# vim /server/scripts/inotify.sh 
 
 #!/bin/sg
 #print for Check the backup data integrity of /backup  by yvonne 2015-7-6 17:56:15.
 
 /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T%w%f‘ -e create,delete /backup/ \
 |while read file
  do
  rsync -r /data [email protected]::backup --password-file=/etc/rsync.password
 done

时间: 2024-10-22 21:00:04

中小型公司架构搭建(待补充)的相关文章

Spring Cloud在国内中小型公司能用起来吗?

今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题 Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将自己的疑问表达了出来,作为一个研究并使用 Spring Boot 和 Spring Cloud 近两年的程序员,看的我手痒痒不答不快呀. 好问题 好问题必须配认真的回答,仔细的看了题主的问题,发现这个问题非常具有代表性,可能是广大网友想使用 Spring Cloud 却又对 Spring Clou

[转]Spring Cloud在国内中小型公司能用起来吗?

原文地址:http://www.cnblogs.com/ityouknow/p/7508306.html 今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将自己的疑问表达了出来,作为一个研究并使用Spring Boot和Spring Cloud近两年的程序员,看的我手痒痒不答不快呀. 好问题 好问题必须配认真的回答,仔细的看了题主的问题,发现这个问

大型项目架构搭建_高内聚、低耦合(1)

软件开发中的项目的架构的终极目标就六个字: 高内聚.低耦合. 架构搭建好了,后期可维护性才干提高,在这基础上,假设还想提高项目的高效性,就仅仅能从算法着手 假设项目中算法都已经做到极致了,还想提高项目的高效性,怎么办?(算法并不一定能处理高并发的问题) 就要用到中间件的技术了 以下我就从这三方面来搭建一个项目 假设我们有个这么需求 我公式和YC公式合作,开发一个项目.这个项目功能是用来測量东西的一个项目,我们公式在存储数据方面做得好,YC公司所以要和我们合作.要我们做一个对数据进行保存的容器,他

【PaPaPa】系统架构搭建浅析 - 人人可以搭架构

声明 [PaPaPa]这个项目是以技术分享与研究为目的而做的,并非商业项目,所以更多的是提供一种思路,请勿直接在项目中使用. 上一篇隐藏开源项目地址实属无奈,为了寻找一起做这件事的同伴不得已刷了一天推荐,在此希望大家能够理解. 从此篇开始将完全公开项目地址以及所有项目中涉及到的细节,包括文档.讨论过程.设计思路.实现方法全部整理出来写成一个系列,这个将在后续文章中一一揭开,敬请期待. 本项目与博文系列将秉承着“授人以渔”的方式写作,尽自己绵薄之力为C#出一份力以回馈我从C#中得到的快乐和生活上的

LNMP应用于中小型企业架构

LNMP应用于中小型企业架构 网站架构图 说明: 1.     两台web服务器放置在公司外网网段(192.168.232.0/24),两台web服务器通过Keepalived实现主备切换,保障web服务高可靠性. 2.     web服务器之间通过rsync+inotify来实现网站目录数据同步,保证主备切换以后的数据一致性. 3.     两台mysql服务器放置在公司内网网段(10.0.0.0/24),采用mysql的主从同步架构来保障后台数据库的高可靠性:通过mysql-proxy实现读

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a

drbd+heartbeat+nfs高可用架构搭建

一.客户需求 1.需求描述 有些客户有自己的存储设备,但是并没有集群文件系统服务,所以如果我们多个节点(计算节点)如果想同时使用其中的一个块且要保证高可用的话,就需要我们自己来完成类似集群文件系统的服务组合,在此我们使用的服务组合是:iscsi共享+drbd+heartbeat+nfs. 2.服务说明 Iscsi共享:这里通过iscsi共享服务将存储设备上的存储块共享出去,提供节点(NC1+NC2)使用,此处我们将在iscsi服务短创建两个镜像充当块设备. Drbd   :服务器之间镜像块设备内

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

【深入Cocos2d-x】使用MVC架构搭建游戏Four

喜欢Four这个项目,就赶快在GitHub上Star这个项目吧! 喜欢我的文章,来微博关注我吧:王选易在学C艹 点我下载 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到我的GitHub上下载该项目的源码. 项目主页 GitHub地址 bug反馈及建议 我做这个项目的原始目的是实验MVC在游戏中的应用. Model-View-Controller(MVC)是一种组合设计模式,它体现了一种关注点分离(Separation of concerns,SoC)的思想.MVC