Denne delen lar deg se alle innlegg laget av dette medlemmet. Merk at du bare kan se innlegg gjort i områder du har tilgang til.
Meldinger - Floyd-ATC
Sider: 1 ... 5 6 [7] 8 9 ... 52
91
« på: 29. August 2015, 09:54 am »
Hei,
Jeg vil bare si ifra at jeg planlegger å flytte serveren i løpet av kort tid, til en maskin med litt dårligere linje men med mye raskere disk, mer minne og mer ledig CPU. Flyttingen vil innebære at serveren blir utilgjengelig i en kort periode (opptil 1 time) mens DNS oppdateres.
92
« på: 25. August 2015, 06:37 am »
First! (Ironisk nok på min bursdag, 24 aug)
Gratulerer :-P Edit: Prøvde å legge til bildet av kviteringen (Både som PNG og JPEG, begge under 100bk i størrelse, men fukk kun feilmeldingen
"Lagringsområdet for opplastinger er ikke skrivbart. Ditt vedlegg eller din avatar kan ikke lagres."
Det var da pussig... sånn, kanskje det funker bedre nå?
93
« på: 24. August 2015, 21:06 pm »
Jeg skulle hjelpe en player med å tenne på portalen, som var på topen av nether. Men det som skjedde da vi teleporterte oss inn i den var at portalen på den andre enden var i et sted i verdenen som vi ikke kunne bevege oss i (det kom sån melding hele tiden "Turn back, here be dragons"). Enten var det utenfor verdenen, eller så var det i en region som gjorde at folk ikke kan gå inn i den. Men i hvertfall så kunne vi ikke røre oss. Vi bare ble teleportert tilbake til det samme stedet hele tiden. Vi var jo også i en portal, så vi kunne ikke åpne chatten, jeg kunne heller ikke knuse portalen, siden jeg ikke kunne endre gm tilbake til 1 og knuse den for så å bruke tpback. Vi greide å komme oss løs til slutt ved å logge ut og inn igjen flere ganger for så å greie og åpne chatten.
Hmm, fascinerende problemstilling. Jeg vil anta at det er RangePlugin selv som må ta høyde for dette allerede i Nether og på en eller annen måte sørge for å hindre at dette skjer. Å innskrenke Nether til 1500x1500 inntil videre virker fristende. /worldborder skal være spesifikk for en og en verden, men jeg er ikke 100% overbevist om at det alene vil eliminere problemet fullstendig. Ettersom Nether er anarki kan det også være at en innskrenking vil kunne skape problemer for folk som har klart å holde stedet sitt hemmelig ved hjelp av avstander.
94
« på: 24. August 2015, 20:50 pm »
I have found thousands of articles on the net explaining how to set up a network load balancer using keepalived and haproxy in CentOS 7, in a few easy steps. Unfortunately, and not really surprising, most of those articles are incomplete -- basically pieces of a bigger puzzle. Instead of promising a complete solution to all your problems, I will therefore instead try to explain how I solved the various problems I ran across, hoping that they might be useful to someone else and perhaps inspire someone to point out flaws in my own setup.
Step 1: Install "keepalived" and "haproxy" Because both are in the standard repo, this is pretty straight-forward:
yum install -y keepalived haproxy Step 2: Punch the necessary holes in the firewall You could open one port at the time, but one article pointed out that it's better to collect everything in a simple XML file so you remember exactly what you opened for haproxy based services to work. Create a file called "/etc/firewalld/services/haproxy.xml" with the following for starters:
<?xml version="1.0" encoding="utf-8"?> <service> <short>HAProxy</short> <description>HAProxy load-balancer</description> <port protocol="tcp" port="80"/> </service> The cool thing about this is that not only can you use this file to punch holes in the firewall, it can also be used to make SElinux understand that haproxy is allowed to listen on those ports:
restorecon /etc/firewalld/services/haproxy.xml Then open the firewall:
firewall-cmd --add-service haproxy --permanent While you're at it, don't forget that keepalived needs to send and receive VRRP messages. If not, both keepalive daemons will incorrectly assume that the partner is dead and they will both try to become MASTER:
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT Step 3: Configure keepalived This daemon will be used for High Availability, you can use as many load balancers as you like and they all need a reachable IP address for management but only one of them will be MASTER at any time and respond to the Virtual IP address where the haproxy will listen. Here is an example "/etc/keepalived/keepalived.conf" file:
! Configuration File for keepalived
global_defs { notification_email { you@your_domain } notification_email_from keepalived@your_host.your_domain smtp_server ###.###.###.### smtp_connect_timeout 30 router_id your_host.your_domain }
vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { ###.###.###.### label ens160:10 } } Notice the "label ens160:10". By default, the Virtual IP address will not actually be visible when using "ifconfig" or other network tools, which can be very confusing. By adding a "label", keepalived will register a virtual network interface for no other purpose than to let "ipconfig" show the Virtual IP address. Just make sure the name conflict with other interfaces.
If you're concerned that multiple nodes become available at the same time and all try to become master, or perhaps you want a certain node to take preference, adjust the "priority" (higher value wins the election) and consider setting the initial state to BACKUP. As long as VRRP communication works, the nodes should be able to manage this perfectly on their own though.
One more thing, we need to adjust the startup parameters to keepalived. Do this by editing "/etc/sysconfig/keepalived":
# Options for keepalived. See `keepalived --help' output and keepalived(8) and # keepalived.conf(5) man pages for a list of all options. Here are the most # common ones : # # --vrrp -P Only run with VRRP subsystem. # --check -C Only run with Health-checker subsystem. # --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop. # --dont-release-ipvs -I Dont remove IPVS topology on daemon stop. # --dump-conf -d Dump the configuration data. # --log-detail -D Detailed log messages. # --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON) # KEEPALIVED_OPTIONS="-D -P -S 1" Step 4: Configure haproxy This daemon is used to perform load balancing, spreading traffic across all of the backend servers. Most of the articles I found presented a very short config for haproxy, which is pretty cool if you want to make it seem like haproxy takes very little effort to configure. Here's a more realistic "/etc/haproxy/haproxy.cfg" config file to start with:
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # Forward log messages to syslog (localhost is okay) log ###.###.###.###:514 local2
chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
# turn on stats unix socket stats socket /var/lib/haproxy/stats
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend http *:80 #acl url_static path_beg -i /static /images /javascript /stylesheets #acl url_static path_end -i .jpg .gif .png .css .js #use_backend static if url_static
default_backend web
#--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check
#--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend web #balance roundrobin balance leastconn server web1 ###.###.###.###:80 check server web2 ###.###.###.###:80 check server web3 ###.###.###.###:80 check Step 5: Make sure haproxy can bind to the Virtual IP address on BACKUP nodes By default, the Linux kernel does not allow a process to listen on a non-existing IP address. This is a problem for us because that address will only exist on the MASTER node. Fortunately, there is a sysctl setting for this exact situation and CentOS 7 makes it very easy to change those. The only side-effect is that any service configured with an incorrect IP address will no longer generate an error, possibly making the error difficult to spot. Simply create a file "/etc/sysctl.d/haproxy.conf":
net.ipv4.ip_nonlocal_bind=1 Step 6: Configure rsyslog We will create two drop files, one for each daemon. Here is an example "/etc/rsyslog.d/keepalived.conf":
$ModLoad imudp $UDPServerRun 514 $template Keepalive,"%timegenerated% your_host %syslogtag% %msg%\n" local1.* -/var/log/keepalived.log;Keepalive ### keep logs in localhost ## local1.* ~ And here is an example "/etc/rsyslog.d/haproxy.conf":
$ModLoad imudp $UDPServerRun 514 $template Haproxy,"%timegenerated% your_host %syslogtag% %msg%\n" local2.=info -/var/log/haproxy.log;Haproxy local2.notice -/var/log/haproxy-status.log;Haproxy ### keep logs in localhost ## local2.* ~ Notice that I have included the actual host name in the templates. This is useful if you decide to forward messages to a remote syslog messages, where the default hostname "localhost" will be completely useless.
Step 7: Configure logrotate We've all forgotten this at some point, haven't we? Here's "/etc/logrotate.d/haproxy":
/var/log/haproxy.log /var/log/haproxy-status.log { missingok notifempty sharedscripts rotate 7 daily compress postrotate reload rsyslog >/dev/null 2>&1 || true endscript } And here's "/etc/logrotate.d/keepalived":
/var/log/keepalived.log { missingok notifempty sharedscripts rotate 7 daily compress postrotate reload rsyslog >/dev/null 2>&1 || true endscript } Step 8: Restart all relevant services You should now be able to restart everything, either one service at a time or simply by rebooting.
sysctl --system firewall-cmd --reload systemctl restart rsyslogd systemctl start keepalived systemctl start haproxy Really? That's it? Now, one last problem caused some head-scratching, and it wasn't actually a problem with the Linux setup. I'm using a Juniper SRX router/firewall which by default ignores Gratuitous ARP because while it does have legitimate uses (like, say, a VRRP host announcing that it has taken over a Virtual IP address) it can also be used for malicious things like man-in-the-middle attacks. Assuming your servers are on a network that you control, this shouldn't be an issue. (Or rather, if your servers are on a network where this might be an issue, you might want to ignore load balancing for now and solve that problem first) But I digress. The end result of having a router ignore GARP is that the router will merrily keep forwarding packets to your (presumably dead) load balancer and not the new MASTER. The solution for Juniper SRX is quite simple, just set "gratuitous-arp-reply" on the interface(s) facing your server network(s). Check your router docs if you see the same symptom.
Anything else? Is anyone able to write an article that doesn't miss a single thing? I don't think I ever read one, and I know for a fact I never wrote one. Check your log files, test the service and start troubleshooting. Then test again. Reboot. Test more. Feel free to comment below :-)
95
« på: 24. August 2015, 17:22 pm »
Jeg har oppgradert forumet til SMF2 for å få inn reCAPTCHA og bekjempe spam, hvis det fortsetter å funke så bra som det ser ut kan det hende vi kan fjerne "godkjenning" av nye brukere sånn at det er lettere for folk å registrere seg.
En annen ting jeg eksperimenterer med er reklamebannere, som dere sikkert har lagt merke til. Foreløpig er de tomme men det endrer seg forhåpentligvis i løpet av få dager. Trafikken på forumet er neppe nok til å finansiere mer enn en pakke tyggegummi i året men alle monner drar.
Det som er viktig er at ikke dere prøver å "hjelpe til" ved å lage masse klikk eller andre dumme ting!
Bruk forumet akkurat som vanlig, ellers blir vi ganske enkelt svartelistet. For de av dere som bruker AdBlock eller lignende: Vit at jeg kjører AdBlock selv med verdens beste samvittighet. Du velger selv. Føler du for å bidra så legg inn nyttige ting i forumet. Har du både AdBlock, skrivesperre og for mye penger så har jeg lagt inn en donasjons-funksjon helt nederst på siden :-D
96
« på: 22. August 2015, 18:23 pm »
Noen som har tatt i dette? Jeg lastet ned nyeste versjon (23), installerte, opprettet et nytt prosjekt og vips -- det kommer tre feilmeldinger som gjør at det nekter å kompilere. Sjekker Google og det er et kjent problem med denne versjonen, offisiell fiks er et hack som gjør at den fortsetter å bruke versjon 22. Sikkert kjekt for de som ikke akkurat har lastet ned og installert for første gang. Oppdatering: I dag slapp de en patch som tok ca. en halv time å legge inn. Så knasket og kompilerte ting i et kvarters tid før jeg fikk enda flere feilmeldinger. Makan til makkverk er det lenge siden jeg har sett.
97
« på: 11. August 2015, 16:37 pm »
Beklager, dette kommer ikke til å skje.
Det finnes allerede en drøss av servere med minigames, det er den viktigste grunnen til at jeg ikke kommer til å installere minigames på mc.atc.no
En annen grunn er at enhver ny plugin må testes mot eksisterende plugins hver eneste gang noe oppgraderes eller endres. Minigames endrer mye rart og vil garantert skape problemer for drøssevis av andre plugins. (To eksempler: Creative mode med load/save av inventory, Teleplugin med permissions og integrering mot WorldGuard)
98
« på: 04. August 2015, 12:08 pm »
Det eneste er at enkelte ting ser kulere ut i skumring/natt enn i fullt dagslys. Stadig regnvær plager meg egentlig mer )
99
« på: 02. August 2015, 13:45 pm »
Jepp, det må bli flere ops. Sørg for å stemme, jeg prøver å få gjennomført mot slutten av uka (dvs. før 10.august)
100
« på: 02. August 2015, 13:44 pm »
Neste gang jeg reiser på fem uker ferie kommer jeg nok muligens til å ta noen minutter for å forklare min overivrige samboer at det IKKE er nødvendig å nappe ut overspenningsvernet til nettlinja i tilfelle uvær, ettersom det er nettopp det overspenningsvernet er der for.
Beklager, det falt meg ikke engang inn at noen kunne være så tett i pappen, da hadde jeg fått noen til å komme innom og plugge dritten inn igjen før det hadde gått drøye fem uker.
101
« på: 02. August 2015, 13:43 pm »
Neste gang jeg reiser på fem uker ferie kommer jeg nok muligens til å ta noen minutter for å forklare min overivrige samboer at det IKKE er nødvendig å nappe ut overspenningsvernet til nettlinja i tilfelle uvær, ettersom det er nettopp det overspenningsvernet er der for.
Beklager, det falt meg ikke engang inn at noen kunne være så tett i pappen, da hadde jeg fått noen til å komme innom og plugge dritten inn igjen før det hadde gått drøye fem uker.
102
« på: 13. Juni 2015, 12:21 pm »
Kanskje det er på tide å utnevne en ny op eller to? Alle mann til stemmeurnene :-)
Hint: /help vote
103
« på: 10. Juni 2015, 20:01 pm »
Nå kjenner jeg bare make overfladisk, det er som du sier ikke et fullverdig scriptspråk men det har makroer og det fine med make er at du kan bruke en Makefile til å beskrive avhengigheter mellom ulike deler av et prosjekt og spare tastetrykk på repetetive ting.
F.eks i dette tilfellet hvor jeg prøver meg fram til en måte å nullstille en liten del av serveren, det krever et spesifikt sett med kommandoer som man kunne ha samlet i et lite script. Så finner jeg fram til en måte å nullstille en annen del, denne kunne vært lagt i et annet script. Hvis jeg nå ønsker å nullstille "alt" så kunne jeg ha laget et tredje script som kjører de to andre i en bestemt rekkefølge.
Istedet samler jeg alle kommandoene i en og samme Makefile, jeg kan nå nullstille kun en og en del, eller alt sammen med en enkel kommando. Hvis de to metodene har fellestrekk (f.eks. paths eller andre argumenter) så holder det å deklarere disse ett sted (man kan til og med bruke en makro for å finne dem dynamisk).
Sånn ser Makefilen min ut akkurat nå:
JAVA_OPTIONS=-Xms4096m -Xmx4096m -Xmn1024m -Djava.io.tmpdir=/home/floyd/tmp -XX:MaxPermSize=512M MC_OPTIONS=--log-append 0 --log-count 5 nogui
DB_NAME=mc DB_USER=mc DB_PASS=********
BASEPATH=/home/floyd/mc
clean: rm -fv *~ DEADJOE || true
# Destroy all databases, both flatfile and mysql. DO NOT USE unless you know what you're doing. reset: clean reset-players reset-logblock reset-dynmap reset-containerprotect reset-petition reset-spawncontrol reset- warps reset-kits reset-stargates reset-regions
reset-players: rm -Rfv world/players/* || true rm -Rfv world_nether/players/* || true rm -Rfv world_the_end/players/* || true
reset-logblock: mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-players`' mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world`' mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world-chest`' mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} -e 'truncate `lb-world-sign`'
reset-dynmap: rm -Rfv plugins/dynmap/web/tiles/world/* rm -Rfv plugins/dynmap/web/tiles/world_nether/* rm -Rfv plugins/dynmap/web/tiles/world_the_end/*
reset-containerprotect: rm -Rfv plugins/ContainerProtect/locations.txt reset-petition: rm -Rfv plugins/PetitionPlugin/*.ticket || true rm -Rfv plugins/PetitionPlugin/archive/*.ticket || true rm -Rfv plugins/PetitionPlugin/last_ticket_id.txt || true rm -Rfv plugins/PetitionPlugin/mail/* || true
reset-spawncontrol: rm -Rfv plugins/SpawnControl/spawncontrol.db
reset-warps: rm -Rfv plugins/TelePlugin/warps/*
reset-kits: rm -Rfv plugins/KitPlugin/kits-*.txt
reset-stargates: rm -Rfv plugins/Stargate/portals/world.db
reset-regions: rm -Rfv plugins/WorldGuard/worlds/world/regions.yml || true rm -Rfv plugins/WorldGuard/worlds/world_nether/regions.yml || true rm -Rfv plugins/WorldGuard/worlds/world_the_end/regions.yml || true
reset-everything: reset rm -Rf world rm -Rf world_nether rm -Rf world_the_end
plugins: clean mv bukkit_update/plugins/*.jar plugins || true rm -Rfv bukkit_update/plugins/*.html || true rm -Rfv bukkit_update/plugins/*.txt || true
publish-plugins: rm -Rfv /home/floyd/public_html/minecraft.atc.no/bin/plugins/*.jar || true cp -v plugins/*.jar /home/floyd/public_html/minecraft.atc.no/bin/plugins
db-backup: mysqldump -f ${DB_NAME} -u${DB_USER} -p${DB_PASS} > minecraft.sql
db-restore: zcat mysql-20130628-000337.zip | mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS}
mysql: mysql -f ${DB_NAME} -u${DB_USER} -p${DB_PASS}
space: -cd ${BASEPATH} -find backups/* -mtime +1 -type f -exec rm -v {} \; -find logs/* -mtime +1 -type f -exec rm -v {} \;
# Delete stale backups, then make labeled backups of everything backup: space db-backup publish-plugins -cd ${BASEPATH} tar cvfz backups/plugins-`date +%Y%m%d-%H%M%S`.tgz --exclude=*.png --exclude=*.hash plugins 2&> backups/plugins.log ||e screen -S mc -X stuff 'save-all'`echo -ne '\015'` sleep 3 screen -S mc -X stuff 'save-off'`echo -ne '\015'` sleep 1 zip -r backups/world-`date +%Y%m%d-%H%M%S`.zip world screen -S mc -X stuff 'save-on'`echo -ne '\015'` zip -r backups/mysql-`date +%Y%m%d-%H%M%S`.zip minecraft.sql
# Destroy world data wipe-world: clean reset rm -Rfv world/*
wipe-nether: clean rm -Rfv world_nether/*
wipe-endgame: clean rm -Rfv world_the_end/*
wipe-test: clean rm -Rfv test/*
wipe-all: wipe-world wipe-nether wipe-endgame
# Download the most recent Bukkit build manually (CButD should take care of this) bukkit: wget http://cbukk.it/craftbukkit.jar
screen: screen -S mc make server # Start Bukkit minecraft server in an endless loop server: echo "#!/bin/bash" > run.sh echo "while [ true ]" >> run.sh echo "do" >> run.sh echo "java ${JAVA_OPTIONS} -jar spigot.jar ${MC_OPTIONS}" >> run.sh echo "rm banned-players.txt" >> run.sh echo "echo Restarting in 30 seconds" >> run.sh echo "sleep 30" >> run.sh echo "done" >> run.sh chmod +x run.sh ./run.sh
servertest: echo "#!/bin/bash" > run.sh echo "java ${JAVA_OPTIONS} -jar spigot.jar ${MC_OPTIONS}" >> run.sh chmod +x run.sh ./run.sh
# Force CButD to check for updates immediately after server startup updatecheck: rm -Rf plugins/CraftBukkitUpToDate ; true server-save-all: screen -S mc -X stuff 'save-all'`echo -ne '\015'`
server-restart: screen -S mc -X stuff 'stop'`echo -ne '\015'` Som du ser erstatter den en hel bråte med script, kommandoene kan testes og kjøres både manuelt og via crontab helt uten videre. Brukernavn/passord og annen nøkkelinfo er definert kun et enkelt sted.
Som jeg nevnte innledningsvis, dette er bare å skrape i overflaten av hva make kan gjøre. Større prosjekter har ofte et helt hierarki av Makefiles hvor hver fil håndterer standard funksjoner som kompilering, linking, testing og installasjon av akkurat "sin" komponent i et større system. En overordnet makefile vil da rekursere gjennom en liste med underkataloger og simpelthen kjøre "make install" eller hva det skal være.
104
« på: 30. Mai 2015, 21:16 pm »
Arbeidet var ikke relatert til selve serveren. Den står ikke hjemme hos meg vet du :-)
105
« på: 30. Mai 2015, 17:08 pm »
Ferdig litt tidligere enn beregnet, serveren skal nå være oppe igjen.
Sider: 1 ... 5 6 [7] 8 9 ... 52
|
|