首页 文章 精选 留言 我的

精选列表

搜索[构建目录],共10000篇文章
优秀的个人博客,低调大师

Avere以NAS形式构建本地对象存储

NAS加速和云存储网关厂商Averec以自己内部部署的NAS系统对象存储作为核心,拥有一条通向公有云的路径。到目前为止,Avere一直专注于加速对本地文件系统的数据访问,近来又涉足到云或者对象存储。现在,又提供了以NAS封装形式的对象存储。 这款Cloud-Core NAS(C2N)系统提供了一个NAS接口,而不是对象存储,甚至不是S3。它有三个组成部分: FXT全闪存高性能层,带有自动缓存 MX100管理节点,1U设备 CX200核心系统/存储节点,1U设备,有12个10TB热插拔的磁盘驱动器 这里至少需要1个MX100,需要2个来实现高可用性。 对象存储系统了三重复制(TR)和擦除编码(EC),以及地理分散的数据恢复。最低配置的TR需要3个CX2000节点,120TB可用容量,以及1个MX100节点。这是入门级的,Avere特别强调了一些对象存储系统是以更大规模、更昂贵、更耗费成本的1PB容量为起点的。 最低的EC配置是需要6个CX200节点,450TB可用容量,外加MX100控制器。 该系统从120TB原始容量/750TB可用容量逐渐增加到超过5PB可用容量。(可用容量是基于4+3擦除代码的,其中5/8的容量可用,因此就是120TB x 0.625=75TB。) FXT层从14TB扩展到480TB的SSD容量,最高配置的FXT5600集群。集群提供了性能扩展和高可用性。 C2N系统,上层是3个MX100,下面是8个CX200,NAS特性包括: NFSv3,SMB2,多协议支持 快照 跨内部部署(私有云)和公有云的全局命名空间 NAS和私有云/公有云之间的数据迁移 镜像 压缩 加密,密钥是在本地管理的 GUI和存储分析 有可选的FalshMove用于数据迁移,FlashMirror用于灾难恢复。 Avere表示,典型的用例就是将NAS用于保存Tier-1数据,CX200(私有对象存储)用于保存Tier-2二级数据,公有云用于保存Tire-3归档数据。 据Avere称,C2N提供了私有云设施,有一个通向公有云的明确路径。它"允许企业创建一个简单且灵活的混合云,将整个异构基础设施作为单一的、逻辑存储池进行管理。" Avere C2N系统即将供货,CX200标价为99500美元。毫无疑问,如果取得成功的话,其他型号也将陆续公布。 本文转自d1net(转载)

优秀的个人博客,低调大师

用Docker构建与环境无关的系统

Docker 有三个特定的功能,以帮助建立与环境无关的系统: 只读文件系统 环境变量注入 存储卷 处理卷是一个大主题,为了学习前两个功能,在本文的其余部分将改变对示例的需求。WordPress 使用一个名为MySQL 的数据库程序来存储大部分数据,所以先确保运行WordPress 的容器是只读文件系统,是一个好主意。 1 只读文件系统 使用只读文件系统产生以下两个积极效果。首先,你对容器不能更改它所包含的文件产生信心;其次,你也会进一步树立信念:容器中的攻击者无法破坏文件。为了在客户系统上使用--read-only 标志,从WordPress 镜像创建和启动一个容器: docker run -d --name wp --read-only wordpress:4 完成这些步骤后,检查容器是否正在运行。你可使用任何先前介绍的方法,也可以直接检查容器元数据。如果指定的wp 容器正在运行,以下命令将输出为真,否则为假。 docker inspect --format "{{.State.Running}}" wp docker inspect 命令将显示Docker 为该容器保留的所有元数据(一个JSON 文件)。格式选项会改变元数据。除了该容器的运行状态,本例中其会滤除元数据的所有字段。这个命令将简单地输出为错误。在这种情况下,容器没有运行。为了找出原因,检查容器中的日志: docker logs wp 输出是这样的: error: missing WORDPRESS_DB_HOST and MYSQL_PORT_3306_TCP environment variables Did you forget to --link some_mysql_container:mysql or set an external db with -e WORDPRESS_DB_HOST=hostname:port? 看起来WordPress 有一个MySQL 数据库的依赖关系。数据库是一个程序,根据检索和搜索方式存储数据。好消息是,你可以使用Docker 安装MySQL,就像安装WordPress: docker run -d --name wpdb \ -e MYSQL_ROOT_PASSWORD=ch2demo \ mysql:5 一旦启动后,会创建一个不同的WordPress 容器,并链接到这个新的数据库容器中:再检查一次,WordPress 是否正常运行: docker inspect --format "{{.State.Running}}" wp2 你可以得知WordPress 失败后重新启动。检查日志以确定原因: docker logs wp2 应该有类似以下的日志: ... Read-only file system: AH00023: Couldn't create the rewrite-map mutex (file /var/lock/apache2/rewrite-map.1) 同样是WordPress 失败后重新启动,但这次的问题是,它试图写一个锁定文件到特定的位置。这是启动的必要组成部分,并无特殊。在这个示例中,需要为只读文件系统增加异常处理。你需要使用卷来做这个异常处理。使用下面的命令启动WordPress,不会有任何问题:更新版本后你能用的脚本看上去像是这样: SQL_CID=$(docker create -e MYSQL_ROOT_PASSWORD=ch2demo mysql:5) docker start $SQL_CID MAILER_CID=$(docker create dockerinaction/ch2_mailer) docker start $MAILER_CID WP_CID=$(docker create --link $SQL_CID:mysql -p 80 \ -v /run/lock/apache2/ -v /run/apache2/ \ --read-only wordpress:4) docker start $WP_CID AGENT_CID=$(docker create --link $WP_CID:insideweb \ --link $MAILER_CID:insidemailer \ dockerinaction/ch2_agent) docker start $AGENT_CID 恭喜你,现在你应该有了一个正在运行的WordPress 容器!通过使用只读文件系统,以及链接WordPress 到另一个运行着数据库的容器,可以确保运行WordPress 镜像的容器永远不会改变。这意味着,如果运行客户的WordPress 博客程序的机器出了问题,可轻松在其他地方启动该容器的另一个副本。但是这一设计有两个问题。首先,数据库和WordPress 的容器运行在同一个机器上。其次,WordPress 对重要的设置,如数据库名称、管理用户、管理密码、数据库加盐等使用默认值。为了解决这个问题,你可以创建多个版本的WordPress 软件,每一个客户都有一个特殊的配置。这样做会使简单的配置脚本变成一个在创建镜像时写入文件的怪物。通过使用环境变量来注入配置则是一个更好的方式。 2 环境变量的注入 环境变量是通过其执行上下文提供给程序的键值对。它可以让你在改变一个程序的配置时,无须修改任何文件或更改用于启动该程序的命令。Docker 使用环境变量来传达相关信息,包括容器的守护选项、容器的主机名,以及其他在容器中运行程序的实用信息。Docker 还为用户提供了一个机制,可将环境变量注入到一个新的容器。那些期望通过环境变量获取重要信息的程序,可在容器创建时就进行配置。幸运的是,WordPress 就是这样一个程序。 在深入WordPress 的细节之前,尝试注入和观察你的环境变量。UNIX 命令env 显示当前执行上下文(终端)中的所有环境变量。要查看注入的环境变量,请使用以下命令: --env 标志或-e 缩写,可用于注入任何环境变量。如果变量已经由镜像或Docker 设置,则该值将被覆盖。容器内部运行程序的方式,可以依赖于这种变量。WordPress 遵循以下环境变量: WORDPRESS_DB_HOST WORDPRESS_DB_USER WORDPRESS_DB_PASSWORD WORDPRESS_DB_NAME WORDPRESS_AUTH_KEY WORDPRESS_SECURE_AUTH_KEY WORDPRESS_LOGGED_IN_KEY WORDPRESS_NONCE_KEY WORDPRESS_AUTH_SALT WORDPRESS_SECURE_AUTH_SALT WORDPRESS_LOGGED_IN_SALT WORDPRESS_NONCE_SALT 提示 这个示例忽略了KEY 和SALT 变量,但任何实际的生产系统绝对应该设置这些值。 开始之前,你应该解决数据库和WordPress 容器在同一个机器上运行的问题。不是使用链接来满足WordPress 的数据库依赖,而是注入WORDPRESS_DB_HOST 变量的值: docker create --env WORDPRESS_DB_HOST=<my database hostname> wordpress:4 这个示例会创建(并不启动)WordPress 容器。不管你在中指定的是什么,该容器都会试着连上一个MySQL 数据库。由于远程数据库可能不会使用任何默认的用户名和密码,你就必须同时注入这些设置。假设数据库管理员是养猫爱好者且痛恨强密码: docker create \ --env WORDPRESS_DB_HOST=<my database hostname> \ --env WORDPRESS_DB_USER=site_admin \ --env WORDPRESS_DB_PASSWORD=MeowMix42 \ wordpress:4 使用环境变量注入这一方法,能帮助你区分WordPress 容器和MySQL 容器之间的物理联系。由于数据库和客户的WordPress 网站都在同一台机器上,你仍然需要解决前面提到的第二个问题——所有的网站都使用相同的默认数据库名称。你需要为每一个独立的站点设置数据库名称以环境变量的方式注入:你已经解决了这些问题,现在可以修改配置脚本了。首先,设置机器只能运行一个MySQL 容器: DB_CID=$(docker run -d -e MYSQL_ROOT_PASSWORD=ch2demo mysql:5) MAILER_CID=$(docker run -d dockerinaction/ch2_mailer) 那么网站配置脚本将是这样的:这个新脚本将为每一位客户启动WordPress 实例和监控器,并将这些容器以及一个单独的邮件程序和MySQL 数据库彼此连接。WordPress 容器在被销毁、重新启动、升级的同时,完全不用担心数据会丢失。如图所示就是这种架构。每个WordPress 和监控器容器使用相同的数据库和邮件服务 客户对当前交付的所有工作成果很满意。但有一件事可能会比较烦人。在早期的测试中,你发现监视器在该网站不可用时,的确可以准确通知邮件服务器,但重新启动该网站和监控器需要手动实现。要是系统在检测到故障时,能尝试自动恢复就更好了。Docker 对此提供了重启的策略,但仍不够稳定。 本文选自《Docker实战》。 想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。

优秀的个人博客,低调大师

nginx+tomcat+memcached构建session共享集群

一、安装配置tomcat 配置前说明: 系统为centos7 m1.xsllqs.com地址为192.168.1.107 c1.xsllqs.com地址为192.168.1.114 c2.xsllqs.com地址为192.168.1.113 安装tomcat需要配合JDK使用,JDK有oracle JDK和open JDK两种 oracle JDK8的下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html tomcat的下载地址:http://tomcat.apache.org/ c1.xsllqs.com(192.168.1.114)下载安装jdk(建议加载到本地在传上去)和tomcat [root@c1~]#wgethttp://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm [root@c1~]#wgethttp://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz [root@c1~]#ls apache-tomcat-8.0.36.tar.gzjdk-8u73-linux-x64.rpm [root@c1~]#yuminstalljdk-8u73-linux-x64.rpm [root@c1~]#vim/etc/profile.d/java.sh exportJAVA_HOME=/usr/java/latest exportPATH=$JAVA_HOME/bin:$PATH [root@c1~]#./etc/profile.d/java.sh [root@c1~]#java-version javaversion"1.8.0_73" [root@c1~]#tarxfapache-tomcat-8.0.36.tar.gz-C/usr/local [root@c1~]#cd/usr/local/ [root@c1local]#ln-svapache-tomcat-8.0.36tomcat "tomcat"->"apache-tomcat-8.0.36" [root@c1tomcat]#vim/etc/profile.d/tomcat.sh exportCATALINA_HOME=/usr/local/tomcat exportPATH=$CATALINA_HOME/bin:$PATH [root@c1tomcat]#./etc/profile.d/tomcat.sh c2.xsllqs.com(192.168.1.113)下载安装jdk和tomcat [root@c2~]#wgethttp://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm [root@c2~]#wgethttp://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz [root@c2~]#ls apache-tomcat-8.0.36.tar.gzjdk-8u73-linux-x64.rpm [root@c2~]#yuminstalljdk-8u73-linux-x64.rpm [root@c2~]#vim/etc/profile.d/java.sh exportJAVA_HOME=/usr/java/latest exportPATH=$JAVA_HOME/bin:$PATH [root@c2~]#./etc/profile.d/java.sh [root@c2~]#java-version javaversion"1.8.0_73" [root@c2~]#tarxfapache-tomcat-8.0.36.tar.gz-C/usr/local [root@c2~]#cd/usr/local/ [root@c2local]#ln-svapache-tomcat-8.0.36tomcat "tomcat"->"apache-tomcat-8.0.36" [root@c2tomcat]#vim/etc/profile.d/tomcat.sh exportCATALINA_HOME=/usr/local/tomcat exportPATH=$CATALINA_HOME/bin:$PATH [root@c2tomcat]#./etc/profile.d/tomcat.sh 二、修改tomcat配置文件 [root@c1tomcat]#cd/usr/local/tomcat/webapps/ [root@c1webapps]#mkdirmyapp/{lib,classes,WEB-INF,META-INF}-pv [root@c1webapps]#cdmyapp/ 添加c1和c2的主页文件 [root@c1myapp]#vimindix.jsp <%@pagelanguage="java"%> <html> <head><title>Tomcat1</title></head> <body> <h1><fontcolor="red">c1.xsllqs.com</font></h1> <tablealign="centre"border="1"> <tr> <td>SessionID</td> <%session.setAttribute("xsllqs.com","xsllqs.com");%> <td><%=session.getId()%></td> </tr> <tr> <td>Createdon</td> <td><%=session.getCreationTime()%></td> </tr> </table> </body> </html> [root@c2myapp]#vimindix.jsp <%@pagelanguage="java"%> <html> <head><title>Tomcat2</title></head> <body> <h1><fontcolor="blue">c2.xsllqs.com</font></h1> <tablealign="centre"border="1"> <tr> <td>SessionID</td> <%session.setAttribute("xsllqs.com","xsllqs.com");%> <td><%=session.getId()%></td> </tr> <tr> <td>Createdon</td> <td><%=session.getCreationTime()%></td> </tr> </table> </body> </html> 修改tomcat-user.xml(c1和c2都要改) [root@c1conf]#vim/usr/local/tomcat/conf/tomcat-users.xml #在</tomcat-users>中添加 <rolerolename="manager-gui"/> <rolerolename="admin-gui"/> <userusername="tomcat"password="<tomcat>"roles="manager-gui,admin-gui"/> 修改server.xml(c1和c2都要改) [root@c1conf]#vim/usr/local/tomcat/conf/server.xml #修改主配置文件,appBase后面是应用的相对路径也可以是绝对路径 <Hostname="localhost"appBase="webapps" unpackWARs="true"autoDeploy="true"> #这里是访问日志的设置 <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log"suffix=".txt" pattern="%h%l%u%t&quot;%r&quot;%s%b"/> #这里设置Context调用msm需要的组件,m1为主c2为备,因为我这里只有3台机器所以把c2作为备,正常情况是4台,2台memcached和2台tomcat <Contextpath="/myapp"docBase="/usr/local/tomcat/webapps/myapp"reloadable="true"> <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="m1:192.168.1.107:11211,c2:192.168.1.113:11211" failoverNodes="m1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" /> </Context> 测试配置文件 [root@c1~]#catalina.shconfigtest [root@c2~]#catalina.shconfigtest [root@c1~]#catalina.shstart [root@c2~]#catalina.shstart 三、安装msm c1和c2上下载msm需要的jar包 [root@c1~]#wgethttp://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/1.9.4/memcached-session-manager-1.9.4.jar [root@c1~]#wgethttp://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/1.9.4/memcached-session-manager-tc8-1.9.4.jar [root@c1~]#wgethttp://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/1.9.4/msm-javolution-serializer-1.9.4.jar [root@c1~]#wgethttp://repo1.maven.org/maven2/net/spy/spymemcached/2.11.1/spymemcached-2.11.1.jar [root@c1~]#wgethttp://www.java2s.com/Code/JarDownload/javolution/javolution-5.4.3.1.jar.zip [root@c1~]#mvjavolution-5.4.3.1.jarmemcached-session-manager-1.9.4.jarmemcached-session-manager-tc8-1.9.4.jarmsm-javolution-serializer-1.9.4.jarspymemcached-2.11.1.jar/usr/local/tomcat/lib/ m1和c2上安装memcached [root@m1~]#yuminstallmemcached [root@c2~]#yuminstallmemcached m1上安装nginx修改nginx的配置文件 [root@m1~]#yuminstallnginx [root@m1~]#vim/etc/nginx/nginx.conf #server外加入 upstreamtcsrvs{ server192.168.1.114:8080; server192.168.1.113:8080; } #server内加入 location~*\.(jsp|do)${ proxy_passhttp://tcsrvs; } [root@m1~]#nginx-t 启动服务 [root@m1~]#systemctlstartnginx.service [root@m1~]#systemctlstartmemcached [root@c2~]#systemctlstartmemcached 四、测试

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册