第二章作业
作者:互联网
公司共有两个业务,网上图书馆和一个电商网站。
现要求运维设计一个安全架构,本着高可用、廉价的原则。
具体情况如下:
网上图书馆是基于jsp开发;
电商系统是基于php开发;
两个网站都是使用的mysql数据库;
要求你提供一个高可用且廉价的架构方案,部署分发业务到外网;
请画出拓扑图及通过虚拟机搭建测试环境
拓扑图
一、部署mysql服务器
第一个里程:下载mysql软件
mysql官方下载链接地址:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/
wget ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.41-linux-glibc2.12-x86_64 /application/mysql-5.6
第二个里程:创建软链接
ln -s /application/mysql-5.6/ /application/mysql
第三个里程:创建数据库管理用户,并进行授权数据目录
useradd -M -s /sbin/nologin mysql
chown -R mysql. /application/mysql/data/
第四个里程:对数据库进行初始化
scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
第五个里程:启动mysql服务
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
#将默认位的mysql位置改成现在安装的位置
sed -ri "s#/usr/local#/application#g" /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
#因版本不同,需要现在的配置文件覆盖系统原来的配置文件
cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
/etc/init.d/mysqld start
第六个里程:设置mysql密码
/application/mysql/bin/mysqladmin -uroot password "oldboy"
/application/mysql/bin/mysql -uroot -poldboy
第七个里程:创建jsp数据库与jsp用户名与密码
create database jpress DEFAULT CHARACTER SET utf8;
grant all on jpress.* to jpress@'10.0.0.0/255.255.255.0' identified by 'oldboy';
flush privileges;
show databases;
第八个里程:创建PHP数据库与php用户名与密码
create database wordpress DEFAULT CHARACTER SET utf8;
grant all on wordpress.* to wordpress@'10.0.0.0/255.255.255.0' identified by 'oldboy';
flush privileges;
select user,host from mysql.user;
二、部署java与tomcat环境
第一步:部署jsp环境(web03,web04)
第一个里程:下载jdk,在官网进行下载
第二个里程:将下载的jdk包解压放至到/application/下
tar xf jdk-8u201-linux-x64.tar.gz
mv jdk1.8.0_201/ /application/
ln -s jdk1.8.0_201/ /application/jdk
第三个里程:在/etc/profile环境变量里添加
export JAVA_HOME=/application/jdk
export PATH=$PATH:$JAVA_HOME/bin;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
第四个里程:查看是否安装成功
java -version
第二步:部署tomcat
第一个里程:在官网上下载tomcat
https://archive.apache.org/dist/tomcat/
第二个里程:将下载的tomcat包进行解压
tar xf apache-tomcat-9.0.8.tar.gz
mv apache-tomcat-9.0.8 /application/tomcat-9.0.8
cd /application/
ln -s tomcat-9.0.8/ /application/tomcat
第三个里程:在/etc/profile里添加配置
export CATALINT_HOME=/application/tomcat
export CATALINT_BASE=/application/tomcat
第四个里程:启动tomcat服务
/application/tomcat/bin/startup.sh
第五个里程:测试访问
10.0.0.9:8080
第三步:将代码放置到tomcat目录下面webapps/ROOT下
第一个里程:在jpress官网上下载tomcat包
https://gitee.com/fuhai/jpress/releases
第二个里程:将下载的war包移动到webapps下面
mv starter-tomcat-1.0.war /application/tomcat/webapps/
第三个里程:重启tomcat服务,进行测试访问
/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh
10.0.0.9:8080/starter-tomcat-1.0
第四个里程:初始化数据库,输入数据库的IP地址,已创建好的数据库名称等信息即可
三、部署php环境(web01,web02)
第一步:部署NGINX服务
第一个里程:软件包依懒安装
yum -y install pcre-devel open-ssl-devel
第二个里程:创建一个管理nginx进程的虚拟用户
useradd -M -s /sbin/nologin www
第三个里程:下载并解压nginxl软件
cd /server/tools
wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar xf nginx-1.15.8.tar.gz
第四个里程:进行软件编译安装
./configure --prefix=/application/nginx-15.8 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
make && make install
第五个里程:为nginx程序软件创建软链接目录
ln -s /application/nginx-15.8 /application/nginx
第六个里程:启动nginx服务
/application/nginx/sbin/nginx
第二步:部署php环境
第一个里程:安装PHP软件依赖关系
[root@web01 tools]# yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-t urbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
libiconv软件安装---字符集转换库(默认可以不进行安装了)
cd /server/tools
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel mhash mcrypt
rpm -qa libmcrypt-devel mhash mcrypt
第二个里程:安装PHP软件
php官方网站下载:php.net
[root@web01 sbin]#
./configure \
--prefix=/application/php-5.5.32 \
--with-mysql=/application/mysql-5.6 \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir --with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-opcache=no
##防错(以下信息可以不进行配置了)
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make && make install
ln -s /application/php-5.5.32/ /application/php
第三个里程:设置PHP程序配置文件
cp php.ini-production /application/php-5.5.32/lib/
cd /application/php/etc/
cp php-fpm.conf.default php-fpm.conf
第四个里程:启动PHP服务
/application/php/sbin/php-fpm
netstat -lntup|grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 6251/php-fpm
第五个里程:编写nginx配置文件
[root@web01 ~]# vim /application/nginx/conf/nginx.conf
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
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;
server {
listen 80;
server_name blog.etiantian.org;
root html/blog;
index index.php index.html index.htm;
location ~* .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
第六个里程:将下载好的wordpress-4.7.3-zh_CN.tar.gz上传到服务器
第七个里程:解压代码程序,将代码和序保存到站点目录并进行授权
cd /server/tools
tar xf wordpress-4.7.3-zh_CN.tar.gz
mv wordpress/* /application/nginx/html/blog/
chown -R www.www /application/nginx/html/blog/
第八个里程:直接访问blog网站,进行初始化操作
blog.etiantian.org
四、部署负载均衡服务器(lb01,lb02)
第一个里程:安装nginx服务
略
第二个里程:编辑nginx配置文件后重启nginx服务
[root@lb01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
}
upstream jsp {
server 10.0.0.9:8080;
}
server {
listen 10.0.0.3:80;
server_name blog.etiantian.org;
root html;
index index.html index.htm;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 10.0.0.4:80;
server_name yjiu1990.etiantian.org;
location / {
proxy_pass http://jsp;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
第三个里程:安装keepalived服务
[root@lb01 nginx]# yum -y install keepalived
第四个里程:编写keepalived配置文件
主配置文件
[root@lb01 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance group01 {
state MASTER
interface eth0
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24
}
}
备配置文件
[root@lb02 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance group01 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24
}
}
第五个里程:keepalived常见问题优化
详见:http://1a7f2dd7.wiz03.com/share/s/0qvOTn10-AEH29_zxM18oPGG3aRLt40Fy4ji245QwB1CUWWz
第六个里程:测试访问
五、部署nfs
第一步:部署nfs服务端
第一个里程:安装服务软件
[root@nfs01 ~]# yum install -y nfs-utils rpcbind
第二个里程:修改配置文件
[root@nfs01 ~]# cat /etc/exports
/data 172.16.1.7/24(rw,sync) 172.16.1.8/24(rw,sync)
表示共享的目录文件所在的位置 允许访问的网段或主机信息 rw:可读可写 sync:数据同步
第三个里程:创建共享存储目录,并进行授权
[root@nfs01 ~]# mkdir /data
[root@nfs01 ~]# chown -R nfsnobody. /data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Feb 14 11:06 /data
第四个里程:启动服务,先启动rpcbind服务再启动nfs服务
[root@nfs01 ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@nfs01 ~]# /etc/init.d/nfs
nfs nfslock nfs-rdma
[root@nfs01 ~]# /etc/init.d/nfs start
第二步:部署客户端(每个客户端都安装)
php服务器
第一个里程:安装nfs与rpcbind服务
[root@web01 ~]# yum install -y nfs-utils rpcbind
第二个里程:使用mount进行挂载
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 38G 1.5G 34G 5% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 38G 1.5G 34G 5% /mnt
jsp服务器
第一个里程:安装nfs与rpcbind服务
[root@web03 ~]# yum install -y nfs-utils rpcbind
第二个里程:使用mount进行挂载
[root@web03 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web03 attachment]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 38G 2.6G 33G 8% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 38G 1.5G 34G 5% /application/tomcat-9.0.8/webapps/ROOT/attachment
六、部署rsync服务
第一步:部署服务端
第一个里程:确认是否安装rsync服务
[root@backup tmp]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
第二个里程:编写配置文件与配置文件说明
#全局配置,在全局生效
uid = rsync -->指定rsync服务运行的时候,向磁盘读取和写入的操作者
gid = rsync -->指定rsync服务运行的时候,向磁盘读取和写入的操作者
use chroot = no -->进行数据同步存储时,安全相关参数,默认内网进行数据同步时,可以关闭
max connections = 200 --> 定义向备份服务器进行数据存储的并发连接数
timeout = 300 --> 定义与备份服务器建立的网络连接,在多长时间没有数据传输时,就释放连接
pid file = /var/run/rsyncd.pid --> 服务程序运行时,会将进程的pid信息存储到一个指定的pid文件中
lock file = /var/run/rsync.lock --> 定义锁文件,主要用于配合max connections 参数,当达到最大连接就禁止继续访问
log file = /var/log/rsyncd.log --> 定义服务的日志文件保存路径信息
ignore errors --> 在进行数据备份传输过程过程中,忽略一些I/O产生的传输错误
read only = false --> 设置对备份的目录的具有读写权限,即将只读模式进行关闭
list = false --> 确认是否可以将服务配置的模块信息,在客户端可以查看显示
hosts allow = 172.16.1.0/24 --> 设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单
hosts deny = 0.0.0.0/32 --> 设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单
auth users = rsync_backup --> 指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建
secrets file = /etc/rsync.password --> 设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息
#局部配置,只在模块内生效
[backup] --> 指定备份目录的模块名称信息
comment = "backup dir by oldboy" --> 模块说明信息
path = /backup --> 指定数据进行备份的目录信息
第三个里程:创建备份目录管理用户
useradd -M -s /sbin/nologin rsync
第四个里程:创建备份目录并将所属组与所属改成rsync用户
mkdir /backup
chown -R rsync. /backup
第五个里程:创建认证文件,并将权限改成600
echo "rsync_backup:oldboy123" >> /etc/rsync.password
chmod 600 /etc/rsync.password
启动rsync服务(rsync端口号为873)
[root@backup /]# rsync --daemon
[root@backup /]# ps -ef |grep rsync
root 2374 1 0 17:12 ? 00:00:00 rsync --daemon
root 2376 1224 0 17:12 pts/0 00:00:00 grep rsync
[root@backup /]# netstat -nltp |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2374/r
sync tcp 0 0 :::873 :::* LISTEN 2374/r
sync
第二步:部署客户端
创建认证密码文件
echo "oldboy123" >> /etc/rsync.password
chmod 600 /etc/rsync.password
第三步:将mysql数据库备份到rsync
mysql服务器上备份脚本
[root@db01 scripts]# cat mysql.sh
#!/bin/bash
date=`date +%F`
/application/mysql/bin/mysqldump -uroot -poldboy --all-database > /server/backup/$d
ate.sql
rsync -avz /server/backup/$date.sql rsync@172.16.1.41::mysql --password-file=/etc/rsync.password
在定时任务中设置每天晚上12点备份
[root@db01 scripts]# crontab -l
#backup mysql to rsync
00 00 * * * /bin/sh /server/scripts/mysql.sh >/dev/null 2>&1
第四步:将nfs服务器的文件备份到rsync
脚本
[root@nfs01 backup]# cat /server/scripts/web_rsync.sh
#!/bin/bash
date=`date +%F`
cd / && tar -zcf backup/$date.tar.gz /data/*
rsync -az /backup/$date.tar.gz rsync@172.16.1.41::nfs --password-file=/etc/rsync.pa
ssword
在定时任务中设置每天晚上12点备份
[root@db01 scripts]# crontab -l
#backup nfs to rsync
00 00 * * * /bin/sh /server/scripts/web_rsync.sh >/dev/null 2>&1
标签:rsync,tomcat,作业,里程,application,mysql,第二章,root 来源: https://www.cnblogs.com/yjiu1990/p/10508733.html