简单web架构实例应用

2021-04-30 14:29

阅读:607

标签:div   conf   替代   header   tcp   other   gid   修改   flag   

一、架构图

技术图片
  • dns完成解析web1,web2来实现负载均衡
  • web1,web2使用后台的mysql数据库
  • web1,web2的页面数据全部放在nfs数据上,实现自动挂载
  • nfs服务器为web1,web2提供网页数据
10.7.2. 准备工作

设置ip信息

nmcli con add ifname ens33 con-name ens33 type ethernet ipv4.method manual ipv4.address 192.158.46.150/24 ipv4.gateway 192.168.46.1

Note

我使用的nmcli修改的ip,当然也是可以手工修改的。
10.7.3. ansible的配置
10.7.3.1. 安装ansible

[root@localhost ~]# yum install ansible

10.7.3.2. 添加主机

需要添加如下内容到/etc/ansible/hosts文件中去。

[client]
192.168.46.159

[dns]
192.168.46.158

[web]
192.168.46.157
192.168.46.156
[db]
192.168.46.155
[nfs]
192.168.46.154
[self]
192.168.46.150

10.7.3.3. 配置免密码登陆

这里我之前写有一个脚本自动完成免密码登陆的脚本,参考我的博客

[root@localhost ~]# cat hosts.txt
192.168.46.150 root oracle
192.168.46.151 root oracle
192.168.46.152 root oracle
192.168.46.153 root oracle
192.168.46.154 root oracle
192.168.46.155 root oracle
192.168.46.156 root oracle
192.168.46.157 root oracle
192.168.46.158 root oracle
192.168.46.159 root oracle
192.168.46.160 root oracle
[root@localhost ~]# cat mima.sh
#!/bin/bash
#================================================
#FileName   :expect_ssh.sh
#Author     :zhaojiedi
#Description:
#DateTime   :2018-01-05 08:26:06
#Version    :V1.0
#Other      :
#================================================
host_username_password_file=hosts.txt

# install expect
rpm -q expect &>/dev/null || yum install -yq expect &>/dev/null

# create id_rsa.pub file
pubkey=~/.ssh/id_rsa.pub
if [ ! -e "$pubkey" ] ; then
        ssh-keygen  -P "" -t rsa  -f ~/.ssh/id_rsa
fi
while read host username password ; do
        con=${username}"@"${host}
        echo $password
        expect > DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 > www.linuxpanda.tech @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER create database web ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on web.* to web@‘192.168.46.%‘ identified by ‘oracle‘;
Query OK, 0 rows affected (0.05 sec)

10.7.7.4. 安全初始化

[root@centos-155 ~]# mysql_secure_installation

10.7.8. web主机配置

这里是2个主机。
10.7.8.1. 安装软件

# 安装
[root@centos-150 ~]# ansible web -m yum -a ‘name=httpd,php-fpm,php-mysql,mod_fcgid state=installed‘
# 启动服务
[root@centos-150 ~]# ansible web -m service -a ‘name=httpd state=started‘
[root@centos-150 ~]# ansible web -m service -a ‘name=php-fpm state=started‘

10.7.8.2. 挂载目录

# 安装必要的挂载相关的软件
[root@centos-156 httpd]# yum install nfs-utils cifs-utils
# 启动rpc服务
[root@centos-156 httpd]# systemctl restart rpcbind
# 查看远程的导出情况
[root@centos-156 httpd]# showmount -e 192.168.46.154
Export list for 192.168.46.154:
/data/html 192.168.46.157,192.168.46.156
# 挂载
[root@centos-156 httpd]# mount 192.168.46.154:/data/html /var/www/html

# 自动挂载
[root@centos-156 httpd]# tail -n 1 /etc/mtab
192.168.46.154:/data/html /var/www/html nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.46.156,local_lock=none,addr=192.168.46.154 0 0
[root@centos-156 httpd]# tail -n 1 /etc/mtab >> /etc/fstab
# 查看下样例网页
[root@centos-156 httpd]# cat /var/www/html/index.html
hellow world

10.7.8.3. 配置httpd

本部分内容需要在2个机器都要做一遍。

# 下载一个样例的php页面
[root@centos-156 httpd]# wget download.linuxpanda.tech/lamp/index.php.sample -O /var/www/html/index.php
# 编辑下样例php页面的数据库连接用户和密码
[root@centos-156 httpd]# vim /var/www/html/index.php
[root@centos-156 httpd]# cat /var/www/html/index.php
close();
?>

# fcgi编辑
[root@centos-156 conf.d]# vim fcgid.conf
# 添加如下3行
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
# 重启网络服务
[root@centos-156 conf.d]# service httpd restart

10.7.8.4. 本机测试

本部分内容需要在2个机器都要做一遍。

[root@centos-156 conf.d]# curl localhost/index.php
成功了

10.7.9. client测试

[root@centos-159 ~]# curl http://www.linuxpanda.tech/index.php
成功了
# 把156的web停掉
[root@centos-159 ~]# curl http://www.linuxpanda.tech/index.php
成功了
# 再把157的web停掉
[root@centos-159 ~]# curl http://www.linuxpanda.tech/index.php
curl: (7) Failed connect to www.linuxpanda.tech:80; Connection refused

10.7.10. 总结

这个作业,看起来挺简单的,做起来还是遇到些麻烦的。

需要改进的地方:

    dns解析太不稳定,如果web1停掉,dns还可能解析到这个停掉的主机,就会导致web没法访问。
    mysql实例后面学习了主从可以考虑完善下。
    lamp没有使用xcache加速下
    本练习都是使用的yum安装的lamp环境,可以考虑使用编译安装方法。
    数据通过nfs共享,本质还是一个磁盘的数据,可以考虑使用rsync来替代nfs。
    数据文件可以考虑放到raid上,来提供文件的访问性能

 

简单web架构实例应用

标签:div   conf   替代   header   tcp   other   gid   修改   flag   

原文地址:https://www.cnblogs.com/tanxiaojun/p/12151739.html


评论


亲,登录后才可以留言!