利用 DNS 和 SAMBA 实现 web 站点的简单高可用

本贴最后更新于 2886 天前,其中的信息可能已经时移世改

本文通过 DNS 绑定两台主机的 IP 地址到一个 URL,然后后台 samba 服务器提供站点文件,此处以 wordpress 为例。这样当有一台服务器 httpd 服务出现故障的时候不至于造成站点无法访问,而且站点数据和 mysql 数据库数据位于后台 samba 服务器,另一台服务器直接从 samba 服务器获取站点文件和数据库数据,不会造成数据的不一致。

一、实验环境:

  1. 三台主机 ip:

    1. 192.168.11.128:DNS,SAMBA

    2. 192.168.11.137:httpd,mysql

    3. 192.168.11.138:httpd

  2. 实验拓扑图如下:

    二、具体实验步骤:

    1. 首先三台服务器分别安装不同的服务:

      yum install -y bind samba samba-common #第一台主机安装 bind 提供 dns,安装 samba 提供 samba 服务# yum install -y httpd mariadb-server #第二台主机提供 mysql 和 httpd 服务# yum install -y httpd #第三台主机提供 httpd 服务#

    2. 配置 SAMBA

      1. 首先编辑**/etc/samba/smb.conf**修改 SAMBA 的配置文件,在配置文件末尾加入如下信息,配置需要共享的路径信息:

        [wordpress] #名称# comment=wordpress #注释信息## path=/data/www/html #共享路径## public=no #禁止来宾账户访问# vaild users=apache #可以看到此共享的用户# write list=apache #允许写操作的用户# [mysql] comment=mysql path=/data/mysql public=no vaild users=mysql write list=mysql

      2. 通过 smbpasswd 命令添加指定的 apache 和 mysql 账户为 samba 账户

        smbpasswd -a mysql smbpasswd -a apache

        注意:

        1. samba 默认会把系统存在的用户添加为 samba 授权用户,所以这两个用户必须存在。

        2. 这两个用户的 uid 必须和第二台主机和第三台主机上的用户 uid 一致,因为 samba 默认会映射远程用户 uid 一直的用户为本地指定 uid 用户。如果 uid 不一致,则不能访问 samba 目录;

      3. 创建/data/mysql 和/data/www/html 目录,并分别修改属主属组,下载 wordpress,解压并放入/data/www/html 目录下,启动 samba 服务:

        mkdir /data/{www/html,mysql} chown mysql,mysql -R /data/mysql chown apache,apache -R /www/html service smb start #smb 是用来做文件共享的# service nmb start #nmb 服务用来解析 netbios name#

    3. 配置 httpd 和 mysql

      1. 第二台主机和第三台主机挂载 samba 共享文件:

        mount.cifs //192.168.11.128/wordpress /var/www/html -o user=apache,password=1234567a mount.cifs //192.168.11.128/mysql /mydata -o user=mysql,password=1234567a

      2. 第二台主机编辑**/etc/my.cnf.d/server.cnf**配置 mysql 的数据目录,在[mysqld]下添加如下行:

        datadir=/mydata

      3. 第二台主机启动 httpd 和 mysql 服务,第三台主机启动 httpd 服务:

        systemctl start httpd systemctl start mariadb

    4. 在第一台主机配置 DNS:

      1. 修改/etc/named.conf 和/etc/named.rfc1912.zones 文件,以前博客有此文件的配置方法,此处不再赘述;

      2. 在/var/named/下创建相应的 zone 文件,配置如下:

        $TTL 3600 @ IN SOA dns admin.wordpress.wzh.com ( 2017060601 10H 10M 10D 10D ) IN NS dns dns IN A 192.168.11.128 www IN A 192.168.11.138 #绑定 www.wordpress.wzh 到 192.168.11.138 和 137 两台主机# www IN A 192.168.11.137

      3. 启动 dns 服务,然后通过 ab 对域名进行压测,同时关闭一台服务器的 httpd 服务,会发现压测并没有报错,说明站点还是正常访问的状态,则表示双站点配置成功。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    957 引用 • 944 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 1 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 824 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 34 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 261 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    43 引用 • 44 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 3 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 106 关注
  • sts
    2 引用 • 2 回帖 • 246 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 17 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10210 引用 • 46384 回帖 • 62 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 484 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 75 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    376 引用 • 1862 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    229 引用 • 476 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 541 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 7 关注
  • 倾城之链
    23 引用 • 66 回帖 • 167 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖