首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

Zookeeper的安装部署,zookeeper参数配置说明,集群搭建,查看集群状态

1、Zookeeper的安装部署 7.1 Zookeeper工作机制 7.1.1、Zookeeper集群角色 Zookeeper集群的角色: Leader 和 follower(Observer) zk集群最好配成奇数个节点 只要集群中有半数以上节点存活,集群就能提供服务 7.2 Zookeeper部署 7.2.1 机器准备 1/ 安装到3台虚拟机上,准备的三台服务器地址是: C:\Windows\System32\drivers\etc\hosts中配置的内容如下: 192.168.106.80 hadoop 192.168.106.81 hadoop2 192.168.106.82 hadoop3 如果想同时能够操作三台服务器,可以进行如下配置: 2/ 安装好JDK 3/ 上传安装包。上传用工具。 4/ 解压 su - hadoop(切换到hadoop用户),如果直接是root用户则不需要这样切换 tar -zxvf zookeeper-3.4.5.tar.gz(解压) 5/ 重命名 mv zookeeper-3.4.5 zookeeper(重命名文件夹zookeeper-3.4.5为zookeeper) 可以删除里面一些源码工程相关的文件,剩下的是这些: 7.2.2修改环境变量 (注意:3台zookeeper都需要修改) 1/ su – root(切换用户到root) 2/ vi /etc/profile(修改文件) 3/ 添加内容: export ZOOKEEPER_HOME=/home/hadoop/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin 4/ 加载环境配置: source /etc/profile 5/ 修改完成后切换回hadoop用户: su - hadoop 7.2.3 修改Zookeeper配置文件 1、用root用户操作 cd zookeeper/conf cp zoo_sample.cfg zoo.cfg 2、vi zoo.cfg 3、添加内容: # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/home/tuzq/software/zookeeper/zkdata dataLogDir=/home/tuzq/software/zookeeper/log # the port at which the clients will connect clientPort=2181 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1= hadoop:2888:3888 server.2= hadoop2:2888:3888 server.3= hadoop3:2888:3888 参数说明: tickTime:zookeeper中使用的基本时间单位, 毫秒值. initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower。 initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s. syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms. dataDir: 数据存放目录. 可以是任意目录.但是我喜欢这么干 dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置 clientPort: 监听client连接的端口号. server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同. 4、创建文件夹: cd /home/tuzq/software/zookeeper/ mkdir zkdata mkdir -m 755 log 5、在data文件夹下新建myid文件,myid的文件内容为: cd zkdata echo 1 > myid 7.2.4 分发安装包到其他机器 scp -r /root/apps root@hadoop2:/root/ scp -r /root/apps root@hadoop3:/root/ 7.2.5 修改其他机器的配置文件 1、修改myid文件 到hadoop2上:修改myid为:2 到hadoop3上:修改myid为:3 7.2.6 启动(每台机器) 注: 1、事先将三台服务器的防火墙都关掉 2、全网统一hosts映射 先配好一台上的hosts 在hadoop机器中的hosts文件中做如下修改: [root@hadoop zkdata]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.106.80 hadoop 192.168.106.81 hadoop2 192.168.106.82 hadoop3 然后: scp/etc/hosts hadoop2:/etc scp/etc/hosts hadoop3:/etc 查看hadoop2中的hosts文件中的内容 [root@hadoop2 zkdata]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.106.80 hadoop 192.168.106.81 hadoop2 192.168.106.82 hadoop3 3、然后一台一台地启动 bin/zkServer.sh start 创建日志文件目录,如果没有这个日志文件将会报错 mkdir -p /home/tuzq/software/zookeeper/log 或者编写一个脚本来批量启动所有机器: for host in " hadoop hadoop2 hadoop3" do ssh $host "source /etc/profile;/home/tuzq/software/zookeeper/bin/zkServer.shstart" vim startupZK.sh chmod +x startupZK.sh #!/bin/bash for host in "hadoop hadoop2 hadoop3" do ssh $host "source /etc/profile;/home/tuzq/software/zookeeper/bin/zkServer.sh start" done 7.2.7 查看集群状态 1、jps(查看进程) 2、zkServer.sh status(查看集群状态,主从信息) 分别查看hadoop hadoop2 hadoop3这三台服务器上的zookeeper的状态

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

如何使用一个IP搭建ES集群——Docker如你所愿

打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处: http://blog.csdn.net/gamer_gyt 博主微博: http://weibo.com/234654758 Github: https://github.com/thinkgamer 写在前边的话 随着业务的发展,elasticsearch部署在一台机子上显然会不够用,那么我们该如何处理呢,幸运的elasticsearch支持横向扩展,即集群模式,这样无论数据量增长多大,我们只需要扩展我们的es集群即可。 本文永久地址 http://blog.csdn.net/gamer_gyt/article/details/53648983 背景说明 Ubuntu16.04 Docker 1.9 Elasticsearch 2.4 假设现在就一台服务器,我们要用这台服务器来部署一个ES的集群,那么最好的解决办法便是Docker了,我们可以利用Docker启动两个容器,在两个容器内各部署一个ElasticSearch,总而组成一个2个节点的ES集群 linux下Docker的部署:http://blog.csdn.net/gamer_gyt/article/details/52769294 终端安装Docker:http://bbs.csdn.net/topics/392063910 我的Docker专栏:http://blog.csdn.net/column/details/13159.html Docker网络模式解释 1:host模式 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用10.10.101.105:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 2:container模式 在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 3:none模式 这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。 4:bridge模式 bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上 两个容器以组播方式创建ES集群 组播配置示例如下,单播配置在最下边,使用时只需替换加几行配置即可 1:下载Ubuntu最近版镜像 sudo docker pull ubuntu 2:配置基本环境 启动容器,进入容器内安装基本环境vim,java,和elasticsearch sudo docker run -it -d –name esc1 ubuntu:latest sudo docker exec -it esc1 /bin/bash apt-get install vim apt install openjdk-8-jre 然后安装es,下载安装包 点击下载 将其拷贝到docker内,安装 dpkg -i elasticsearch-2.4.0.deb 至此基本环境已经准备的差不多了,然后便是退出容器,stop 容器,然后进行commit 保存成两个容器 sudo docker commit esc1 es1:1.0 sudo docker commit esc1 es2:1.0 最后查看镜像如图所示: 3:es环境配置 分别启动两个容器 sudo docker run -it -d -p 9201:9201 -p 9301:9301 -p 5001:5001 -p 5602:5602 –name esc1 es1:1.0 sudo docker run -it -d -p 9200:9200 -p 9300:9300 -p 5000:5000 -p 5601:5601 –name esc2 es2:1.0 进入两个容器进行配置elasticsearch.ymal文件 esc1: cluster.name: xdstar node.name: node-1 node.master: false node.data: true network.host: 0.0.0.0 http.port: 9201 transport.tcp.port: 9301 esc2: cluster.name: xdstar node.name: node-2 node.master: true node.data: true network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 cluster.name:集群名字,配置必须一样 node.name:每个节点的名字,不能一样 node.master: true 代表可以被选举为主节点,false代表不能被选举为主节点(这里我们设置esc2为主节点) ndoe.data:代表是否可以存储数据 network.host:表示访问的ip,0.0.0.0表示可以以IP访问或者localhost,127.0.0.1 network.port:访问的端口 启动Elasticsearch service elasticsearch start 细心的朋友会发现容器的启动端口转发端口不一致,这是因为,这里启动Docker容器默认采用的桥接,和主机共享端口了,所以两者端口不能一致,要不然会重复 启动完es集群,浏览器输入 https:192.168.1.250:9200/_plugin/head (这里我安装了head插件,插件安装,参考之前的一篇文章,里边有讲到:http://blog.csdn.net/gamer_gyt/article/details/52654263) 4:安装logstash配置rsyslog解析文件 logstash 2.4版本 点击下载 更多版本:https://www.elastic.co/downloads/past-releases dpkg -i logstash-all-plugins-2.4.0_all.deb 然后进入配置文件目录 cd /etc/logstash/conf.d vim rsyscon.conf 添加以下内容 input { syslog{ port => 5000 type => syslog } } output { stdout { codec=> rubydebug } elasticsearch { hosts => ["localhost:9200"] } } 启动logstash service logstash start 5:本地配置,产生syslog日志 编辑rsyslog的配置文件: vim /etc/rsyslog.conf 最后添加 *.* @localhost:5000 *.* @@localhost:5000 重启rsyslog服务 service rsyslog restart ssh 本地,产生日志 ssh localhost 这个时候观察elasticsearch界面: ES集群的多播与单播 以上的集群是采用组播的方式来构建的,组播就是通过在你的网络中发送UDP的ping请求以发现节点,其它Elasticsearch会收到这些ping请求并且进行响应,这样随后就会形成一个集群。 多播对于开发环境是很好的,你不需要做什么事情,打开一些节点,他们自然的会发现对方形成一个集群。 正是因为这种易用性,你在生产环境中必须禁掉它。否在你得到的结果就是一个节点意外的加入到了你的生产环境,因为他们收到了一个错误的组播信号。对于组播本身并没有错。组播会导致一些愚蠢的问题,并且导致集群变的脆弱(例如:一个网络工程师正在捣鼓网络,而没有告诉你,你会发现所有的节点突然发现不了对方了)。 在生产环境中,建议使用单播代替组播,也就是说为Elasticsearch提供一些它应该去尝试连接的节点列表。一旦这个节点联系到组播列表中的一员,它就会得到整个集群所有节点的状态,然后它会联系master节点,并加入集群。 这意味着你的单播列表不需要包含你的集群中的所有节点,它只需要包含足够一个新节点联系上其中一个并且说上话就ok了。 ES 是一个 P2P 类型(使用 gossip 协议)的分布式系统,除了集群状态管理以外,其他所有的请求都可以发送到集群内任意一台节点上,这个节点可以自己找到需要转发给哪些节点,并且直接跟这些节点通信。 所以,从网络架构及服务配置上来说,构建集群所需要的配置极其简单。在 Elasticsearch 2.0 之前,无阻碍的网络下,所有配置了相同 cluster.name 的节点都自动归属到一个集群中。 2.0 版本之后,基于安全的考虑,Elasticsearch 稍作了调整,避免开发环境过于随便造成的麻烦。 ES 从 2.0 版本开始,默认的自动发现方式改为了单播(unicast)方式。配置里提供几台节点的地址,ES 将其视作 gossip router 角色,借以完成集群的发现。由于这只是 ES 内一个很小的功能,所以 gossip router 角色并不需要单独配置,每个 ES 节点都可以担任。所以,采用单播方式的集群,各节点都配置相同的几个节点列表作为 router 即可。 此外,考虑到节点有时候因为高负载,慢 GC 等原因可能会有偶尔没及时响应 ping 包的可能,一般建议稍微加大 Fault Detection 的超时时间。 同样基于安全考虑做的变更还有监听的主机名。现在默认只监听本地 lo 网卡上。所以正式环境上需要修改配置为监听具体的网卡。 network.host: "0.0.0.0" discovery.zen.minimum_master_nodes: 3 discovery.zen.ping.timeout: 100s discovery.zen.fd.ping_timeout: 100s discovery.zen.ping.unicast.hosts: ["10.19.0.97","10.19.0.98","10.19.0.99","10.19.0.100"] 上面的配置中,两个 timeout 可能会让人有所迷惑。这里的 fd 是 fault detection 的缩写。也就是说: discovery.zen.ping.timeout 参数仅在加入或者选举 master 主节点的时候才起作用; discovery.zen.fd.ping_timeout 参数则在稳定运行的集群中,master 检测所有节点,以及节点检测 master 是否畅通时长期有用。 既然是长期有用,自然还有运行间隔和重试的配置,也可以根据实际情况调整: discovery.zen.fd.ping_interval: 10s discovery.zen.fd.ping_retries: 10 单播配置 以上展示为组播方式,单播配置相对来说只需要在配置文件里加几行即可 esc1: discovery.zen.ping.unicast.hosts: ["localhost:9300","localhost:9301"] esc2: discovery.zen.ping.unicast.hosts: ["localhost:9300","localhost:9301"] PS:我这里尝试了很多次,增加了 discovery.zen.minimum_master_nodes: 3 discovery.zen.ping.timeout: 100s discovery.zen.fd.ping_timeout: 100s 这三个属性之后集群并不能启动,所以这里只设置了discovery.zen.ping.unicast.hosts属性 OK!!!

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

使用docker toolbox 在windows上搭建统一环境

1.先下载docker toolbox 以下是下载地址: http://get.daocloud.io/#install-docker-for-mac-windows 2.下载安装git windows 客户端 安装全都 忽咯了,一律允许。 点击 启动docker 如果看到以下界面就显示成功了: 第一次比较慢,要装default 这个系统,启动后,你可以打开你虚拟机看看 接着讲一下,如何将本地的工程目录放到docker 容器环境下: 事先约定好:我在E盘上面新建 了一个workspace的目录: 然后我将这个目录挂载到docker 的虚拟机下面:设置 -> 共享 -> 添加共享文件夹 上面已经看清楚了,共享文件夹是workspace: 然后到default 里执行如下命令: mkdir /data mount -t vboxsf workspace /data 然后,就没有然后了 接下来,我们用-v 这个参数将目录挂载上去: 以下是我本地的目录结构: 然后看一下,docker-compose.yml: # development.yml version: '2' services: php-fpm: image: jackluo/php-fpm:5.6.3 restart: always volumes: - /data/php/tanzi/www:/var/www/html - /data/php/tanzi/data:/usr/local/var/log web: image: index.alauda.cn/library/nginx restart: always links: - php-fpm volumes: - /data/php/tanzi/config:/etc/nginx/conf.d - /data/php/tanzi/data:/var/log/nginx volumes_from: - php-fpm ports: - 80:80 expose: - 80 然后就可以docker-compose up -d 了 至此就安装完了

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

利用现有服务器搭建IP-SAN存储服务器

一、准备工作 CentOS6.4服务器2台(1台用做IP-SAN存储服务器,1台做流媒体服务器) iSCSITatget软件 iSCSI Initiator 二、安装iSCSI target软件(IP-SAN服务器) Iscsitarget下载地址为:http://iscsitarget.sourceforge.net [root@iscsi-targetiscsi]#tar-xzvfiscsitarget-1.4.20.1.tar.gz [root@iscsi-targetiscsi]#cdiscsitarget-1.4.20.1 [root@iscsi-targetiscsitarget-1.4.20.1]#make [root@iscsi-targetiscsitarget-1.4.20.1]#makeinstall [root@iscsi-targetiscsi]#serviceiscsi-target Usage:/etc/init.d/iscsi-target{start|stop|restart|condrestart|status} 配置ietd.conf文件 iSCSI Enterprise Target的主配置文件为/etc/iet/ietd.conf,打开ietd.conf找到类似如下行: #Targetiqn.2016-03.com.example:storage.disk2.sys1.xyz iqn.yyyy-mm.<reverseddomainname>[:identifier] 其中: iqn:表示“iSCSI Qualified Name”,简称iqn。 yyyy-mm:表示年份-月份。这里是2016-03。 reversed domain name:表示倒过来的域名,这里是com.example。 identifier:表示识别代码,这里是storage.disk2.sys1.xyz。 配置ietd.conf文件 设定 LUN(Logical Unit Number),找到类似如下行: #Lun0Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz 将前面的“#”号去掉,“Lun 0 Path=/dev/sdb”表示块设备号为0,映射的磁盘为/dev/sdb,“Type”值fileio是默认的,可以用于磁盘、file和LVM,这里设定的是“fileio”,主要用来对一个磁盘进行存储共享。 至此,简单的iSCSI Target配置完毕,最后启动iscsi-target服务: [root@iscsi-targetiscsi]#serviceiscsi-targetstart 三、安装iSCSI Initiator(流媒体服务器) 主流Linux发行版本默认都自带了iSCSI Initiator,如果系统没有安装,只需通过光盘查找即可。 这里以centos6.4版本为例,使用iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm包进行安装: [root@ Initiator iscsi]#rpm –ivh iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm 安装完成后,会生成/etc/iscsi主程序配置目录。 启动Initiator服务,操作如下: [root@Initiatoriscsi]#serviceiscsistart 四、在linux上执行iSCSI Target发现 可以使用如下指令向 iSCSI Target 主机查询划分了哪些lun: iscsiadm-mdiscovery--typesendtargets--portalIP 或者 iscsiadm-mdiscovery-tsendtargets-pIP 需要说明的是:当成功执行一次Target发现后,iSCSI Initiator就会将查询纪录写到/var/lib/iscsi/send_targets对应目录下。因此,对于Target发现只需执行一次即可。 Discovery (/var/lib/iscsi/send_targets):在/var/lib/iscsi/send_targets目录下,生成一个target服务器信息文件,文件名为“target服务的IP,端口号”(例如“200.200.10.200,3260”)。此文件用来记录target服务器信息。 Node (/var/lib/iscsi/nodes):在/var/lib/iscsi/nodes目录下,生成一个或多个以target存储服务器上的Target名命名的文件夹,每文件夹下有一个用来记录target服务器上特定Target信息的文件。 五、通过iscsiadm指令与iSCSI Target 建立关联 iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。 (1)登录iSCSITarget: iscsiadm-mnode-T<target-name>-p<ip-address>:<port>--login 或 iscsiadm-mnode-T[target-name]-p[ip-address]-l 这里的“-T”后面跟target名称,“ip-address”是target主机的IP地址,“port”是target主机的端口号,默认是3260。 (2)断开Initiator与iSCSI Target 主机的连接: iscsiadm-mnode-T[target-name]-p[ip-address] –u 3、通过iscsiadm指令与iSCSI Target 建立关联 (3)查看SiCSIsession和设备信息: iscsiadm-msession-i iscsiadm–msession–R 如果一个Target下新增了一个卷,在服务器上使用iscsiadm –m session –R命令可以刷新当前连接的session以看到新增的卷 (4)查看有那些target记录在了数据库中: iscsiadm-mnode (5)查看target存储端相关配置信息 iscsiadm-mnode-Tiqn.2010-11.net.ixdba:sdc-p192.168.12.246 iscsiadm-mdiscovery–p192.168.12.246

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

在Centos 7中使用 Docker搭建MySQL异地双向复制环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/48463397 (0)一些准备操作: Centos安装好之后(这里使用的是vm虚拟机) 将当前用户添加到sudoers中: su root vim /etc/sudoers 找到 root ALL=(ALL) ALL 在之后添加一行 ${user} ALL=(ALL) ALL 保存切换用户即可 本地ssh免密码登陆Centos虚拟机 本地系统为Mac,使用自带的终端工具ssh连接虚拟机 ssh ${user}@${ip} 会要求输入密码 使用scp复制本地的rsa公钥到虚拟机中 scp ~/.ssh/id_rsa.pub ${user}@${ip}:/home/${user}/.ssh 进入虚拟机中的.ssh目录 cat id_rsa.pub >> authorized_keys 修改authorized_keys文件的权限 chmod 600 authorized_keys 没有修改权限的话可能没办法成功 之后即可直接使用ssh ${user}@${ip}登陆虚拟机 方便起见,可以将该命令写入/etc/profile中 alias centos=’ssh ${user}@${ip}’ 之后直接执行centos就可以连接到虚拟机 (1)Docker安装: sudo yum -y install docker 启动Docker服务: sudo systemctl start docker 设置开机启动Docker: sudo systemctl enable docker 设置免sudo执行Docker命令: sudo groupadd docker sudo gpasswd -a ${user} docker sudo systemctl restart docker newgrp - docker 期间若是出现无法上网的情况请参考: Centos7 虚拟机无法上网解决方法: (1) cd /etc/sysconfig/network-scripts/ 修改该目录下的ifcfg-eno****** vi ifcfg-eno32 ONBOOT=”yes” 开启自动启用网络连接 重启 (2) 关闭虚拟机,打开虚拟机存储的目录,用记事本打开三台电脑图标的vmx 配置文件,加一条进去 ethernet0.virtualDev = “e1000” 再次开机 由于直接使用官方的MySQL镜像无法满足此次需求,所以从 (2)从一个基本的Ubuntu镜像开始重新配置MySQL: docker pull ubuntu 从该镜像启动容器 docker run –name mysql -itd ubuntu 进入容器内部bash环境(此时可以像日常操作Linux一样进行操作) docker exec -it mysql bash (3)Ubuntu安装MySQL: 更新apt-get apt-get update 安装MySQL apt-get -y install mysql-server 容器中的vi编辑器不好用,可以顺便下个vim apt-get -y install vim root密码修改为自己的,如果在容器中不知道密码可以使用一下命令修改 passwd root 这里可以先将这个容器保存为镜像,免得之后出错了要重新安装这些东西 docker commit mysql docker tag ${id} chubby/mysql:0.1 (4)在Ubuntu容器中配置MySQL多实例启动 目标:在一个Ubuntu容器中可以启动两个MySQL服务 作用:每个容器模拟一个数据库服务器,两个MySQL服务分别准备做异地容灾的主从 修改mysql配置文件: vim /etc/mysql/my.cnf 在[mysqld]的内容中加入: log_slow_queries=/var/log/mysql/mysql-slow.log log-bin server-id=1 注释一行: bind-address = 127.0.0.1 没有注释的话从节点无法连接到master 另外加入两个内容: [mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = root password = root [mysqld1] socket = /var/run/mysqld/mysqld1.sock port = 3307 pid-file = /var/run/mysqld/mysqld1.pid log-slow-queries = /var/log/mysql1/mysql-slow.log ## mysql slow log relay-log = /var/spool/mysqld1/mysqld-relay-bin ## relay for replication datadir = /var/lib/mysql1 ## mysql data file folder user = mysql log-bin server-id=2 以上的配置具体看情况设置 启动MySQL: service mysql start 修改root密码: mysqladmin -u root -p password “root” 初始化第二个MySQL实例: mysql_install_db –user=mysql –datadir=/var/lib/mysql1 启动该MySQL实例: mysqld_multi start 1 使用命令查看3306、3307端口是否开启 netstat -tunlp 如果有则启动成功 登陆该实例时需要制定sock文件 修改该实例的root密码: mysqladmin -S /var/run/mysqld/mysqld1.sock -u root -p password “root” 登陆该实例: mysql -S /var/run/mysqld/mysqld1.sock -uroot -proot 进去之后可以使用 show variables like ‘%datadir%’; 查看datadir是否是配置文件中的路径 (5)配置主从双向复制 将这个容器提交成镜像 docker commit mysql docker tag ${id} chubby/mysql:1.0 使用这个镜像启动两个容器 docker run –name mysql1 -itd chubby/mysql:1.0 docker run –name mysql2 -itd chubby/mysql:1.0 进入bash环境 docker exec -it mysql1 bash docker exec -it mysql2 bash 分别启动两个容器中的两个mysql实例 进入主数据库(默认的3306端口,两个容器相同的操作) mysql -uroot -proot 查看用户登陆信息 select user,host from mysql.user; 设置root用户可以从任何地方登陆访问任何表 grant all on *.* to root@’%’ identified by ‘root’ with grant option; 新建一个用户backup用来 给从数据库登陆,获取主数据库信息,密码也是backup(这里设置的登陆地址为localhost,如果从数据库在别的机器上需要修改为对应的IP) GRANT REPLICATION SLAVE ON *.* to ‘backup’@’%’ identified by ‘backup’; 刷新 flush privileges; 查看用户登陆信息 select user,host from mysql.user; 可以看到相关用户的登录权限已经设置好了 使用 show variables like “%log_%”; 查看二进制日志是否开启(配置文件中的log-bin),要使用主从复制一定要开启这个 使用 show master status; 查看主数据库信息 File和Position 这两个信息会在配置从数据库的时候用到 进入从库,执行下列命令进行主库信息配置 change master to master_host=’localhost’,master_user=’backup’,master_password=’backup’,master_log_file=’mysqld-bin.000003’,master_log_pos=107; master_host:主库地址(如果不是默认的3306可以使用master_port指定端口信息) master_user:上面配置的从库登陆主库的用户 master_log_file:即主库show master status;中File的值 master_log_pos:即主库show master status;中Position的值 开启从库 start slave; 查看状态信息 show slave status\G 其中的 Slave_IO_Running: Yes Slave_SQL_Running: Yes 两个必须都为Yes才是成功 此时为Slave单向复制Master,若要变为双向复制则将Master和Slave节点的角色互换然后分别做各自角色的配置即可 若是Slave同步的时候出现问题: Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’ 在对应的Master中 flush logs; show master status; 记下File, Position 重新执行 change master to master_host=’localhost’,master_user=’backup’,master_password=’backup’,master_log_file=’mysqld-bin.000003’,master_log_pos=107; 即可 一些其他的资料: (1)使用Docker官方的MySQL镜像 docker pull busybox docker pull docker.io/mysql 使用busybox启动镜像作为挂载数据的容器 docker run –name mysql_data -v /var/lib/mysql -d busybox echo “MySQL data” 使用MySQL镜像连接到数据容器的volume中 docker run –name=mysql_server –volumes-from mysql_data -e MYSQL_ROOT_PASSWORD=root -d docker.io/mysql Docker容器挂载磁盘路径无法访问的问题解决方法,添加selinux规则,将要挂载的目录添加到白名单: chcon -Rt svirt_sandbox_file_t /home/docs (2)Centos 7缺乏yum源安装mysql: wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpml 安装这个包后,会获得两个mysql的yum repo源: /etc/yum.repos.d/mysql-community.repo /etc/yum.repos.d/mysql-community-source.repo。 安装mysql: sudo yum install mysql-server

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

🎉 漏洞扫描零漏洞,.NET 基础框架 Furion v4.9.1.56

自上次发布版本至今已过去十五日,随着 Furion 的声名日隆,越来越多的开发者投身于 .NET 的学习与实践中,并积极采用 Furion 作为开发工具。 本次更新不仅针对先前版本中的诸多问题进行了修复,还增添了一系列开发者所期盼的新特性,同时,我们也对文档进行了全面优化与调整。为确保项目的顺畅运行与功能的最大化利用,我们强烈建议所有项目尽快升级至当前最新版本。 项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://github.com/MonkSoul/Furion 文档:https://furion.net 本期亮点 1. 修复高危漏洞CVE-2019-082 当前版本通过 AppScan 和 Trivy 对 Furion 框架代码进行漏洞扫描,扫描结果均为:高危 0,中危 0,低危 0 2. 修复Newtonsoft.Json 和 System.Text.Json 处理值类型被声明为可空类型并赋予默认值时不一致问题 3. 数据验证校验 颜色值 已支持所有格式 4. 任务队列支持配置延迟队列是否立即执行一次 本期更新 新特性 [新增] 任务队列支持配置延迟队列是否立即执行一次 4.9.1.56 ⏱️2024.03.21 #I9AF54 [新增] 事件总线支持事件处理程序执行结果订阅 4.9.1.47 ⏱️2024.03.13 f3028fa [新增] JWT 授权配置 RequireExpirationTime 属性,解决 JWT 过期时间不能大于 13年 问题 4.9.1.46 ⏱️2024.03.13 #I9840M [新增] 脱敏词汇模块支持自定义嵌入文件词汇文件名 4.9.1.45 ⏱️2024.03.09 4ed72fc [新增] 脱敏词汇模块支持获取敏感词和所在位置 4.9.1.45 ⏱️2024.03.09 #I972P7 [新增] 任务队列支持配置特定的任务采用并行还是串行的执行方式 4.9.1.38 ⏱️2024.03.07 a732c72 [新增] 任务队列可传入自定义任务 TaskId 4.9.1.38 ⏱️2024.03.07 a732c72 突破性变化 [调整] 远程请求 [Method]AsStreamAsync 返回值类型 4.9.1.44 ⏱️2024.03.08 ef03308 [调整] 任务入队返回值类型,由 Guid 改为 object 类型 4.9.1.38 ⏱️2024.03.07 a732c72 问题修复 [修复] 因 d212e2b 提交导致动态创建 WebAPI 实现插件化功能失效 4.9.1.55 ⏱️2024.03.20 #I9A59F a96d276 [修复] 数据验证 ValiationTypes.Color 不支持八位 RGBA 格式问题 4.9.1.54 ⏱️2024.03.19 ca0b660 [修复] 不注册 AddJwt 不能使用 JWTEncryption.Encrypt 方法问题 4.9.1.53 ⏱️2024.03.16 5882cf9 [修复] 通过漏洞扫描工具扫描框架出现 CVE-2019-0820 高危漏洞 4.9.1.50 ⏱️2024.03.15 68056ec [修复] ASP.NET Core 启动时自动载入 NuGet 包导致模块化配置 SupportPackageNamePrefixs 出现非预期的结果 4.9.1.50 ⏱️2024.03.15 d212e2b [修复] 动态 WebAPI 配置了 DefaultModule 后导致生成重复的模块路由,由 87849d1 提交导致 4.9.1.49 ⏱️2024.03.14 #I98GDW [修复] 在 Newtonsoft 序列化中启用了 AddLongTypeConverters 配置来处理值类型被声明为可空类型并赋予默认值时出现转换异常问题 4.9.1.48 ⏱️2024.03.13 ecd547f [修复] 脱敏词汇模块获取所有词汇没有去重问题 4.9.1.45 ⏱️2024.03.09 4ed72fc [修复] 定时任务设置作业触发器 RunOnStart 在配置了 StartTime 属性后出现启动时机错误问题 4.9.1.42 ⏱️2024.03.08 c1e2eb3 [修复] 定时任务设置作业触发器 StartTime 后导致获取间隔触发器 NextRunTime 不正确问题 4.9.1.41 ⏱️2024.03.07 734a8c3 1756ab4 [修复] 远程请求重试操作出现 The request message was already sent. Cannot send the same request message multiple times. 异常 4.9.1.40 ⏱️2024.03.07 #I96MOY 其他更改 [优化] 远程请求核心类型 HttpRequestMessage 和 HttpResponseMessage 对象创建和销毁方式 4.9.1.43 ⏱️2024.03.08 03034c9 文档 更新 仓储文档、Db 静态类文档、脚手架文档、.NET7 升级 .NET8 文档、JSON 序列化文档、Docker 部署文档、数据库上下文文档、虚拟文件文档、远程请求文档、HttpContext 文档、JSON 静态类文档、定时任务文档、数据库仓储拓展文档、数据库实体文档、规范化文档、任务队列文档、虚拟文件系统文档、PM2 部署文档 查看更多更新内容:https://furion.net/docs/category/upgrade

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

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

用户登录
用户注册