网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用

这篇具有很好参考价值的文章主要介绍了网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

day02

深入理解程序的数据存储

验证

配置NFS服务器

配置代理服务器

配置名称解析


day02

深入理解程序的数据存储

  • 程序将文字数据保存到数据库中
  • 程序将非文字数据(如图片、视频、压缩包等)保存到相应的文件目录中

验证

  • 发一篇文章,文章内容包含文字和图片
  • 在数据库中查看文字数据。在最新的一条记录中,可以查看到图片的保存位置
[root@database ~]# mysql

mysql> use wordpress;

mysql> select * from wp_posts\G
  • 在文件系统中查看图片文件。/usr/share/nginx/html/wp-content/uploads/是固定位置,其后的2023/01是年和月目录。每个月上传的图片,都会保存到相应的月份目录。
[root@web1 html]# ls /usr/share/nginx/html/wp-content/uploads/2023/01/

snow.jpg

配置NFS服务器

  • 准备环境

虚拟机ip与名称:nfs 192.168.88.31

  • 配置ansible环境
[root@pubserver project01]# vim inventory 

[webservers]

web1 ansible_host=192.168.88.11

web2 ansible_host=192.168.88.12

web3 ansible_host=192.168.88.13


[dbs]

database ansible_host=192.168.88.21


[storages]

nfs ansible_host=192.168.88.31

   

[all:vars]

ansible_ssh_user=root

ansible_ssh_pass=a
  • 配置nfs服务
# 1. 配置yum

[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 


# 2. 配置nfs服务

[root@pubserver project01]# vim 08-config-nfs.yml

---

- name: config nfs

  hosts: nfs

  tasks:

    - name: install nfs        # 安装nfs

      yum:

        name: nfs-utils

        state: present


    - name: mkdir /nfs_root    # 创建共享目录

      file:

        path: /nfs_root

        state: directory

        mode: "0755"


    - name: nfs share          # 修改配置文件

      lineinfile:

        path: /etc/exports

        line: '/nfs_root 192.168.88.0/24(rw)'


    - name: start service      # 循环启动服务

      service:

        name: "{{item}}"

        state: started

        enabled: yes

      loop:

        - rpcbind       # nfs服务依赖rpcbind服务

        - nfs-server


[root@pubserver project01]# ansible-playbook 08-config-nfs.yml


# 3. 查看共享输出

[root@nfs ~]# showmount -e

Export list for nfs:

/nfs_root 192.168.88.0/24
  • 迁移文件至nfs共享
# 1. 重新下载web1的html目录

[root@pubserver project01]# cp 06-fetch-web1.yml 09-fetch-web1.yml

---

- name: copy web

  hosts: web1

  tasks:

    - name: compress html        # 压缩html目录到/root下

      archive:

        path: /usr/share/nginx/html

        dest: /root/html2.tar.gz

        format: gz


    - name: download html

      fetch:

        src: /root/html2.tar.gz  # 下载压缩文件

        dest: files/

        flat: yes


[root@pubserver project01]# ansible-playbook 09-fetch-web1.yml 


# 2. 释放压缩包到nfs服务器

[root@pubserver project01]# cp 07-deploy-web23.yml 10-deploy-nfs.yml

[root@pubserver project01]# vim 10-deploy-nfs.yml 

---

- name: deploy nfs

  hosts: nfs

  tasks:

    - name: unarchive to web     # 将控制端压缩文件解压到指定位置

      unarchive:

        src: files/html2.tar.gz

        dest: /nfs_root/


[root@pubserver project01]# ansible-playbook 10-deploy-nfs.yml 


# 3. 清除web服务器的html目录

[root@pubserver project01]# vim 11-rm-html.yml

---

- name: rm html

  hosts: webservers

  tasks:

    - name: rm html

      file:

        path: /usr/share/nginx/html

        state: absent

        

    - name: create html

      file:

        path: /usr/share/nginx/html

        state: directory

        owner: apache

        group: apache

        mode: "0755"


[root@pubserver project01]# ansible-playbook 11-rm-html.yml


# 4. 挂载nfs到web服务器

[root@pubserver project01]# vim 12-mount-nfs.yml

---

- name: mount nfs

  hosts: webservers

  tasks:

    - name: install nfs

      yum:

        name: nfs-utils

        state: present

        

    - name: mount nfs

      mount:

        path: /usr/share/nginx/html

        src: 192.168.88.31:/nfs_root/html

        fstype: nfs

        state: mounted


[root@pubserver project01]# ansible-playbook 12-mount-nfs.yml

配置代理服务器

  • 准备环境

虚拟机ip与名称:haproxy1 192.168.88.5   haproxy2 192.168.88.6文章来源地址https://www.toymoban.com/news/detail-829451.html

  • 配置ansible环境
[root@pubserver project01]# vim inventory 

[webservers]

web1 ansible_host=192.168.88.11

web2 ansible_host=192.168.88.12

web3 ansible_host=192.168.88.13


[dbs]

database ansible_host=192.168.88.21


[storages]

nfs ansible_host=192.168.88.31


[lb]

haproxy1 ansible_host=192.168.88.5

haproxy2 ansible_host=192.168.88.6


[all:vars]

ansible_ssh_user=root

ansible_ssh_pass=a
  • 配置高可用、负载均衡功能
# 1. 配置yum

[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 


# 2. 配置调度服务器

[root@pubserver project01]# vim 13-install-lb.yml 

---

- name: install lb

  hosts: lb

  tasks:

    - name: install pkg

      yum:

        name: haproxy,keepalived

        state: present


[root@pubserver project01]# ansible-playbook 13-install-lb.yml 


# 3. 修改配置文件并启动服务

[root@pubserver project01]# vim 14-config-lb.yml

---

- name: config haproxy

  hosts: lb

  tasks:

    - name: rm lines

      shell: sed -i '64,$d' /etc/haproxy/haproxy.cfg


    - name: add lines

      blockinfile:

        path: /etc/haproxy/haproxy.cfg

        block: |

          listen wordpress

              bind 0.0.0.0:80

              balance roundrobin

              server web1 192.168.88.11:80 check inter 2000 rise 2 fall 5

              server web2 192.168.88.12:80 check inter 2000 rise 2 fall 5

              server web3 192.168.88.13:80 check inter 2000 rise 2 fall 5


          listen mon

            bind 0.0.0.0:1080

            stats refresh 30s

            stats uri /mon

            stats auth admin:admin


    - name: start service

      service:

        name: haproxy

        state: started

        enabled: yes


[root@pubserver project01]# ansible-playbook 14-config-lb.yml


# 4. haproxy1配置keepalived,实现高可用集群

[root@haproxy1 ~]# vim /etc/keepalived/keepalived.conf 

...略...

 12    router_id haproxy1   # 为本机取一个唯一的id

 13    vrrp_iptables        # 自动开启iptables放行规则

...略...

 20 vrrp_instance VI_1 {

 21     state MASTER        # 主服务器状态是MASTER

 22     interface eth0

 23     virtual_router_id 51

 24     priority 100

 25     advert_int 1

 26     authentication {

 27         auth_type PASS

 28         auth_pass 1111

 29     }

 30     virtual_ipaddress {

 31         192.168.88.80       # vip地址

 32     }

 33 }

# 以下全部删除


# 5. haproxy2配置keepalived

[root@haproxy1 ~]# scp /etc/keepalived/keepalived.conf 192.168.88.6:/etc/keepalived/

[root@haproxy2 ~]# vim /etc/keepalived/keepalived.conf 

...略...

 12    router_id haproxy2   # 为本机取一个唯一的id

 13    vrrp_iptables        # 自动开启iptables放行规则

...略...

 20 vrrp_instance VI_1 {

 21     state BACKUP        # 备份服务器状态是BACKUP

 22     interface eth0

 23     virtual_router_id 51

 24     priority 80         # 备份服务器优先级低于主服务器

 25     advert_int 1

 26     authentication {

 27         auth_type PASS

 28         auth_pass 1111

 29     }

 30     virtual_ipaddress {

 31         192.168.88.80

 32     }

 33 }

 

# 6. 启动服务

[root@haproxy1 ~]# systemctl enable keepalived.service --now

[root@haproxy2 ~]# systemctl enable keepalived.service --now


# 7. 验证。haproxy1上出现VIP。客户端访问http://192.168.88.80即可

[root@haproxy1 ~]# ip a s | grep 192

    inet 192.168.88.5/24 brd 192.168.88.255 scope global noprefixroute eth0

    inet 192.168.88.80/32 scope global eth0

配置名称解析

  • 通过本机hosts文件实现名称解析
[root@myhost ~]# echo "192.168.88.80 www.danei.com" >> /etc/hosts
  • 如果客户端是windows主机,则使用记事本程序打开C:\windows\System32\drivers\etc\hosts添加名称解析
  • 当点击http://www.danei.com页面中任意链接时,地址栏上的地址,都会变成192.168.88.11。通过以下方式修复它:
# 在nfs服务器上修改配置文件

[root@nfs ~]# vim /nfs_root/html/wp-config.php 

# define('DB_NAME', 'wordpress')它的上方添加以下两行:

define('WP_SITEURL', 'http://www.danei.com');

define('WP_HOME', 'http://www.danei.com');

到了这里,关于网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解剖“全球最大男性交友网站”,GitHub十五年数据库架构演进

    数据库编程大赛:一条SQL计算扑克牌24点 近期,GitHub全面升级到了MySQL 8.0。ITPUB特别邀请了NineData创始人、资深技术专家叶正盛老师,为大家解析GitHub历年数据库架构的发展历程,以及大型网站何时进行分库分表的改造。 Hello,各位朋友!今天,我们一起来回顾GitHub,这个被程

    2024年02月03日
    浏览(20)
  • spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构

    ##关于window mysql主从搭建简单教程 传送门 window mysql5.7 搭建主从同步环境-CSDN博客 ##父pom.xml ##模块pom.xml ##yml配置 ##mapper.xml ##TestMapper ##TestService ##TestController ##浏览器访问 ##数据库

    2024年01月21日
    浏览(38)
  • MariaDB数据库的主从配置

    首先准备两台可以互相ping通的机器,两台机器可以互为主从,示例:10.210.23.77主服务器 10.20.84.183从服务器 在两台机器上各自安装数据 解压MariaDB安装包;  安装MariaDB依赖包;  启动MariaDB服务  安全配置 # 开始安全配置   ① 输入当前密码,初次安装后是没有密码的,直接回

    2024年02月04日
    浏览(22)
  • Windows 安装 MariaDB 数据库

    之前一直使用 MySQL,使用 MySQL8.0 时候,占用内存比较大,储存空间好像也稍微有点大,看到 MariaDB 是用来代替 MySQL 的方案,之前用着也挺得劲,MySQL8.0 以上好像不能去导入低版本的 sql,或者需要改一些东西,但是用着 MariaDB 不用改就可以导入,所以写一下这个的安装 Maria

    2024年02月09日
    浏览(23)
  • MariaDB数据库服务器

    目录 一、什么是数据库? 二、什么是关系型数据库? 三、数据库字符集和排序规则是什么? 四、常用数据类型 五、Mariadb数据库相关配置案例 一、什么是数据库? 数据库(DB)是以一定方式长期存储在计算机硬盘内,能与多个用户共享,具有尽可能小的冗余度、与应用程序

    2024年02月10日
    浏览(18)
  • mariadb数据库从入门到精通

    实验环境:yum仓库搭建好 mariadb 是当前流行的Mysql数据库的分支 Mysql原先SUN公司(java)被Orical收购了 Mysql开源免费,所以企业当中的核心数据库是Orical,其余是Mysql mariadb是Mysql数据库的一个分支 1.数据库的安装 由于数据库的登陆不需要密码所以不安全,我们要安全初始化。 密码

    2024年01月21日
    浏览(33)
  • 使用MariaDB数据库管理系统

    初始化MariaDB服务 //再确认mariadb数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要做以下5个操作 1.设置root管理员在数据库中的密码值(该密码并非root管理员在系统中的密码,这里的密码值默认应该为空) 2.设置root管理员在数据

    2024年02月19日
    浏览(26)
  • [MariaDB] 数据库统计插件启用和配置

    最近因为需要监控数据库(MySQL/MariaDB)的登陆动作、数据修改等,需要调研一个监控数据库方案。经查询有canal等开源方案,调查过后基本也符合需求;最后查询GPT推荐MariaDB官方插件server audit:初步阅读文档感觉很符合需求,故进行部署验证和测试 基于CentOS7部署最新版本的

    2024年02月02日
    浏览(27)
  • Cpolar内网穿透本地MariaDB数据库

    cpolar内网穿透本地MariaDB数据库,实现外公网环境下使用navicat图形化工具远程连接本地内网的MariaDB数据库 配置MariaDB数据库 安装MariaDB数据库 进入MariaDB数据库官网https://mariadb.com/downloads/community/,然后下载相应的windows版本 下载好后点击安装,出现设置密码界面设置一下密码,mar

    2024年02月06日
    浏览(21)
  • 第十六章 使用MariaDB数据库管理系统

    一、数据库管理系统 1、数据库介绍 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量数据

    2024年02月05日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包